MySql 如何结合 LEFT JOIN 查询和 NOT IN 查询

标签 mysql sql join left-join notin

我需要将 LEFT JOIN 查询与 NOT IN 查询结合起来,并且必须从这些查询中获取结果值。我在分别使用这两个查询时得到了正确的结果。

我有两个表可能是 useranswer

用户

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

关于MySql 如何结合 LEFT JOIN 查询和 NOT IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668999/

相关文章:

SQL - 多注册条件查询

sql - 如何处理2个几乎相同的表

sql - Hive: java.lang.OutOfMemoryError: Java heap space and Job running in-process (local Hadoop)

php - 如何在代码中使用连接?

mysql - 从内连接创建表非常慢

mysql - AWS Data Pipeline MySQL Nulls sed shell 命令事件 MIGRAINE

mysql - 无法使 mariadb 中的 select+update 事务自动执行

mysql - 如何组合 03 SELECT statements/MySQL query for single MySQL table

PHP:在动态页面上使用 POST 将我重定向到 index.php 并且不发布值

mysql - LEFT JOIN 与可能存在或可能不存在的数据集