我正在尝试获取UserID的列表,其中每个条目的EndDate都为NULL例如
Userid | EndDate
123 | NULL
123 | NULL
124 | 2016-01-01
124 | NULL
123 | NULL
123 | NULL
125 | 2016-01-01
126 | NULL
所以我只想返回123和126。
似乎有一种简单的方法可以做到这一点,但我没想出来。
提前感谢您的帮助。
答案 0 :(得分:0)
select Userid
from sometable
group by Userid
having count(EndDate) = 0
http://rextester.com/QJSWV55265
如果count(EndDate)
仅存在NULL值, 0
将返回Userid
。
如果您有一个users
表和正确的索引,那么可能会更快:
select Userid
from users u
where not exists (
select *
from sometable t
where t.Userid = u.Userid
and t.EndDate is not null
)
更新当所有条目不为空时,相反的查询(获取Userid
)将是:
select Userid
from sometable
group by Userid
having count(EndDate) = count(Userid)
答案 1 :(得分:0)
您可以获取具有非空结束日期的所有用户ID的列表,然后使用NOT IN
将其排除。
SELECT DISTINCT userid
FROM yourTable
WHERE userid NOT IN (
SELECT userid
FROM yourTable
WHERE EndDate IS NOT NULL)
答案 2 :(得分:0)
使用NOT EXISTS
和子查询执行此操作:
select distinct
`userid`
from yourtable t1
where not exists (
select 1
from yourtable t2
where t1.userid = t2.userid
and t2.enddate is not null
)
和demo在这里。