我怎样才能使用连接查询来查找交集

时间:2016-02-01 04:17:59

标签: mysql

我想找到没有订单的用户

我的想法是,Get all user ids and substract the unique ids in orders table

如何在MySQL查询语法中对其进行转换。

mysql> select * from users;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

mysql> select * from orders;
+------+---------+--------+
| id   | user_id | amount |
+------+---------+--------+
|    1 |       1 |  10.00 |
|    1 |       2 |   5.00 |
+------+---------+--------+
2 rows in set (0.00 sec)

2 个答案:

答案 0 :(得分:1)

这个想法是在用户(左表)和订单表之间进行左连接。

然后,从此联接表中,您需要过滤那些没有任何订单的记录。所以在这种情况下,orders.id将为NULL。

SELECT 
users.id
FROM users
LEFT JOIN orders
ON users.id = orders.user_id
WHERE orders.id IS NULL

视觉理解:

enter image description here

SQL连接更好地解释了here

答案 1 :(得分:0)

select * from users where id not in (select user_id from orders)