所以我在MySQL数据库中有2个表,一个用于“用户”,另一个用于“订单”,其中订单中的每个条目都是用户下的订单(有些用户可以有多个订单,有些可能没有有什么)。我正在处理报告查询,我想要的其中一个报告是一个从未下过任何订单的用户列表。在MySQL查询方面,我仍然是一个初学者,所以我不知道如何做到这一点。如果这有任何不同,将通过PHP放置查询。
以下是每个表格中的列(简化):
用户:
ID
Name
订单:
OrderID
OrderName
CustomerID (corresponds to User.ID that placed the order)
这里的任何帮助都会很棒。谢谢!
答案 0 :(得分:2)
在订单上使用LEFT JOIN
并检查OrderId是否为空:
SELECT U.*
FROM
Users U
LEFT JOIN Orders O ON(U.ID = O.CustomerID)
WHERE
O.OrderId IS NULL
答案 1 :(得分:1)
SELECT ID, Name
FROM users
WHERE ID NOT IN (SELECT DISTINCT customerID FROM Orders)
答案 2 :(得分:0)
所以基本上你一直在寻找那些不是由那个用户做出的订单
Select * from Orders where CustomerID = 5 //5 is the id of the custumer
如果您按名称进行搜索
Select * from Orders LEFT JOIN Users on Users.ID Where Users.name ='Mark'
如果没有结果,则表示客户从未订购任何商品
答案 3 :(得分:0)
尝试
SELECT U.*
FROM Orders a
RIGHT JOIN Users b
ON b.ID = a.CustomerID
WHERE a.OrderId IS NULL