我需要将 LEFT JOIN
查询与 NOT IN
查询结合起来,并且必须从这些查询中获取结果值。我在分别使用这两个查询时得到了正确的结果。
我有两个表可能是 user
和 answer
用户
表
user_id
1
2
3
4
5
答案
表
user_id date
1 2015-10-15 21:23:14
2 2015-10-15 20:23:14
3 2015-11-11 16:23:14
LEFT JOIN
查询:
SELECT user.user_id
FROM user
LEFT JOIN answer
ON user.user_id = answer.user_id
WHERE DATEDIFF(NOW(),answer.date) > 5
此查询返回结果 user_id
1,2。
NOT IN
查询:
SELECT user.user_id
FROM user
WHERE user.user_id NOT IN (SELECT answer.user_id FROM answer)
此查询返回结果 user_ids
4, 5。
我需要将这两个查询组合成一个查询,所以我尝试了以下两个查询:
SELECT user.user_id
FROM user
LEFT JOIN answer
ON user.user_id = answer.user_id
WHERE (DATEDIFF(NOW(),answer.date) > 5
AND user.user_id NOT IN (SELECT answer.user_id FROM answer))
和
SELECT user.user_id
FROM user
LEFT JOIN answer
ON user.user_id = answer.user_id
WHERE user.user_id NOT IN (SELECT answer.user_id FROM answer)
AND DATEDIFF(NOW(),answer.date) > 5
但是这些返回空的 user_id
。
编辑
预期结果应包含值 1,2,4,5
如果您的意思是将 2 个选择组合在一起
尝试Union All/Union:
SELECT * FROM
(
SELECT [WITH YOUR LEFT JOIN STATEMENT]
UNION
SELECT [WITH YOUR NOT IN STATEMENT]
) ResultTABLE
我是一名优秀的程序员,十分优秀!