我想找到没有订单的用户
我的想法是,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)
答案 0 :(得分:1)
这个想法是在用户(左表)和订单表之间进行左连接。
然后,从此联接表中,您需要过滤那些没有任何订单的记录。所以在这种情况下,orders.id将为NULL。
SELECT
users.id
FROM users
LEFT JOIN orders
ON users.id = orders.user_id
WHERE orders.id IS NULL
视觉理解:
SQL连接更好地解释了here。
答案 1 :(得分:0)
select * from users where id not in (select user_id from orders)