Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不显示同一Id包含null的Id?_Sql_Sql Server_Tsql_Sql Server 2008_Rdms - Fatal编程技术网

Sql 不显示同一Id包含null的Id?

Sql 不显示同一Id包含null的Id?,sql,sql-server,tsql,sql-server-2008,rdms,Sql,Sql Server,Tsql,Sql Server 2008,Rdms,我有一个下表数据,其中包含ID为null和Y的状态列 Id Name Status 1394 Test 1 Y 1394 Test 2 null 1394 Test 3 null 1395 Test 4 Y 1395 Test 5 Y 1396 test 6 null ID1394包含null和Y。 如果ID包含Null,则我不应获取该ID 在这种情况下,我应该只获取1395,因为特定的ID不包含null值 您可以

我有一个下表数据,其中包含ID为null和Y的状态列

Id      Name    Status
1394    Test 1  Y
1394    Test 2  null    
1394    Test 3  null    
1395    Test 4  Y
1395    Test 5  Y
1396    test 6  null
ID1394
包含
null
Y
。 如果
ID
包含
Null
,则我不应获取该
ID

在这种情况下,我应该只获取
1395
,因为特定的
ID
不包含
null


您可以使用
不存在

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.id = t.id and t2.status is null
                 );

我将在这里使用聚合方法:

选择Id
从你的桌子上
按id分组
有计数(状态为空时,则1结束)=0;

HAVING
子句中使用条件聚合:

SELECT Id, MAX(Status) Status
FROM tablename
GROUP By Id
HAVING SUM(CASE WHEN Status IS NULL THEN 1 ELSE 0 END) = 0
或者,如果希望所有行和列不在中使用:

SELECT *
FROM tablename
WHERE Id NOT IN (SELECT Id FROM tablename WHERE Status IS NULL)
还有一个选择:

SELECT Id from tablename
EXCEPT 
SELECT Id FROM tablename WHERE Status IS NULL;

第一条语句获取所有ID值的集合。第二个获取状态为NULL的所有ID值的集合。Exception从第一个集合中删除第二个集合以及重复的集合。请注意,没有ORDERBY子句,因此不要假定行具有已定义的顺序

这是成功的。如果我的行包含10万个data@sampathacharya这是过早的优化吗?先试试看。还是你的问题只是你实际问题的开始?@SMor好的,我会努力得到结果。谢谢you@sampathacharya . . . 奇怪的是,你没有接受这个答案,因为在
(id,status)
上有一个索引,这会有最好的性能。