SELECT *
FROM dbo.tbl_inspectors
WHERE user_id NOT IN
(Select user_id FROM dbo.vw_alerts WHERE alertID=1)
我试图返回尚未读取特定警报的检查员列表,user_id 是公共字段,该语句的逻辑似乎有效,但没有返回任何结果。尽管如果单独运行子查询确实会返回结果。
SELECT *
FROM dbo.tbl_inspectors
WHERE user_id NOT IN
(Select user_id FROM dbo.vw_alerts WHERE alertID=1)
我试图返回尚未读取特定警报的检查员列表,user_id 是公共字段,该语句的逻辑似乎有效,但没有返回任何结果。尽管如果单独运行子查询确实会返回结果。
如果你想使用NOT IN
,那么你应该只包含不为空的值,因为not in
处理null
值的方式不同:
SELECT *
FROM dbo.tbl_inspectors
WHERE user_id NOT IN (Select user_id
FROM dbo.vw_alerts
WHERE alertID=1
AND user_id is not null)
但是子查询结果是您不想要的。因此,如果子查询返回所有用户,那么您的查询将不会返回任何结果。您确定它应该返回行吗?有些用户没有响应警报。