mysql - 对多个表进行 SELECT 查询

标签 mysql sql database

我有两个表,

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/

相关文章:

database - Linq to Sql - 多个 .DBML 文件或一个 .DBML 文件

php - 谷歌地图 API 和 XML

mysql - Web 应用程序中具有多个因素的动态搜索过滤器

php - 在主机服务器上加载并重新启动服务器

mysql - JOINS 而不是子选择

sql - Access SQL LEFT JOIN 替代方案

sql - 在 MS Access 中通过 SQL 指定日期/时间字段格式

php - MySQL小写比较数据

sql - sql语句语法错误

java - 从 H2 数据库的大表中选择随机行