我真的在努力解决这个问题。我有2个表,一个用于“用户”,一个用于“订单”。 “users”具有字段“user_id”,“orders”也具有字段“user_id”。
我需要知道“orders”表中有0条记录的用户的总记录。换句话说,如果我在“用户”表中注册了1000个用户,那么有多少用户从未在网站上下过订单。
我试图用这样的东西来,但当然这是不正确的:
SELECT Count(u.user_id) as tRecs, o.orderid
FROM users u
INNER JOIN orders o ON u.user_id = o.user_id
答案 0 :(得分:3)
您可以使用Left Join
SELECT COUNT(A.UserID) FROM Users A LEFT JOIN Orders B ON A.UserID = B.UserID WHERE B.UserID IS NULL
或Not Exists
SELECT COUNT(A.USERID) FROM Users A WHERE NOT EXISTS (SELECT UserID FROM Orders X WHERE X.UserID = A.UserID)
或Not In
SELECT COUNT(A.USERID) FROM Users A WHERE A.UserID NOT IN (SELECT UserID FROM Orders)
根据您的DBMS的性能,您希望看到此What's the difference between NOT EXISTS vs. NOT IN vs. LEFT JOIN WHERE IS NULL?