我有两个表,
ID NAME
-------------------
12 Jon Doe
4 Jane Doe
9 Sam Doe
和
MemID Cat# DateChkOut DateDue DateRet
4 T 430.98 1956 15-Mar-2011 14-Jun-2011 31-May-2011
12 B 125.2 2013 15-Mar-2011 14-Jun-2011
4 T 430.98 1956 27-Dec-2012 25-Mar-2013
现在我需要列出从未借过书的“成员(member)”姓名。
SELECT Name FROM MEMBER,CHECKOUT WHERE ID != MemID;
没用。有什么建议吗?
最佳答案
在这种情况下,您需要使用 LEFT JOIN
。
尝试以下操作:
SELECT M.Name
FROM MembersTable M
LEFT JOIN CheckoutTable C On C.MemId = M.ID
WHERE C.MemId IS NULL
编辑:
LEFT JOIN
在这种情况下起作用,因为它在一个公共(public)键上连接两个表 - 在本例中为 MemId
。由于这是一个 LEFT JOIN
,它将获取左表(成员)中存在的所有内容,如果找到匹配项,它将包括右表(结帐)中的所有内容。但是,如果在 Checkout 表中找不到匹配项,则该侧的所有内容都将为 NULL
。
因此,您需要做的就是检查右侧是否为 NULL
。
希望这是有道理的:)
关于mysql - 对多个表进行 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293314/