【发布时间】:2015-11-12 10:14:09
【问题描述】:
我需要将LEFT JOIN 查询与NOT IN 查询结合起来,并且必须从这些查询中获取结果值。分别使用这两个查询时,我得到了正确的结果。
我有两张桌子可能是user 和answer
user表
user_id
1
2
3
4
5
answer表
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的值
【问题讨论】:
-
您希望看到什么输出?
-
不应该是
WHERE DATEDIFF(NOW(),answer.date) < 5吗?
标签: mysql sql join left-join notin