首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求解SQL语句有关问题,小弟我sql弱爆了

2012-12-15 
求解SQL语句问题,我sql弱爆了SELECT A.house_addr,A.scode,A.SQ_ID,A.stype,A.fzxm,A.fzdh,A.fzsfz,ROW_NU

求解SQL语句问题,我sql弱爆了


SELECT A.house_addr,A.scode,A.SQ_ID,A.stype,A.fzxm,A.fzdh,A.fzsfz,ROW_NUMBER() OVER(ORDER BY A.id) AS id,A.person_count FROM 
(
SELECT tbh.house_addr,tbh.scode,tbh.SQ_ID,tbh.stype,tbh.fzxm,tbh.fzdh,tbh.fzsfz,tbh.id,tbh.person_count
FROM t_BaseHouse tbh
WHERE
tbh.house_addr IN (SELECT tbh2.house_addr FROM t_BaseHouse tbh2 GROUP BY tbh2.house_addr HAVING COUNT(tbh2.house_addr)=1)
--((SELECT COUNT(*) FROM t_BaseHouse tbh2 WHERE tbh.house_addr = tbh2.house_addr)>2)
) A
RIGHT JOIN 
(
SELECT DISTINCT(tbh2.house_addr) FROM
t_BaseHouse tbh2 INNER JOIN v_user u2 
ON u2.sq_id = tbh2.SQ_ID 
WHERE tbh2.last_checker IS  NULL  
) B
ON B.house_addr = A.house_addr
WHERE A.person_count IS  NULL 
GO


得出的结果有NULL值,。。。请问哪里出问题了?如下图:

[解决办法]
说明B.house_addr = A.house_addr没有匹配的数据 。
[解决办法]
ON (B.house_addr = A.house_addr and B.house_addr is not null)
[解决办法]
试试这个:
ON B.house_addr = A.house_addr AND A.person_count IS  NULL
[解决办法]
引用:
说明B.house_addr = A.house_addr没有匹配的数据 。

没有匹配不是也应该返回B表的行吗?B表所有行都是有数据的啊。
[解决办法]
引用:
ON (B.house_addr = A.house_addr and B.house_addr is not null)


引用:
试试这个:
ON B.house_addr = A.house_addr AND A.person_count IS  NULL


楼上2位的方法都试过了。还是会出现330条空记录。331之后都正常。
[解决办法]
看不到具体的数据,也不知道你逻辑。
有left join可以吗?试试看吧。
也有可能2个子查询的结果进行right join就是这样的结果
[解决办法]
 
这个条件放到 on之后
 A.person_count IS  NULL 

热点排行