MySQL中2个表中的多个WHERE条件

Posted

技术标签:

【中文标题】MySQL中2个表中的多个WHERE条件【英文标题】:Multiple WHERE conditions in 2 tables in MySQL 【发布时间】:2015-10-06 14:07:41 【问题描述】:

我有 2 个表如下:

table1

ID    Name     Test
A011  John     1
A012  Lynda    1
A013  Micheal  1
A014  Jack     0
A021  Joe      1
A015  Paul     0

table2

ID    Done
A011  1
A012  1

我想从 table1 中选择所有具有ID 的行,其中三个首字母等于A01test 字段为1,还有table2 中不存在ID

我试过这个查询:

SELECT a.* FROM table1 a LEFT JOIN table2 b ON a.ID = b.ID 
WHERE a.test = 1 AND b.ID IS NULL

结果是 2 行,ID A013A021。我尝试使用LEFT(ID,3) 来获得IDA01,但是,我无法实现我想要的。

如何只过滤 ID 以A01 开头的记录?

【问题讨论】:

嗯...你试过了吗? Inner join 可以提供帮助。 到目前为止你尝试过什么?请编辑您的问题,添加您现在的查询。 @GustavoStraube,我编辑了我的问题,请看一下。谢谢 尝试将此条件添加到您的WHERE 子句:a.ID LIKE 'A01%'。让我知道它是否有效。 @GustavoStraube 非常感谢,效果很好。谢谢!!!!如果我想添加 ORDER BY 和 LIMIT,它仍然有效吗? 【参考方案1】:

试试这个,它会给你想要的结果

SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.userid = t2.userid WHERE LEFT(t1.userid , 3) LIKE '%A01%' AND t1.userid NOT IN (SELECT userid from table2)

【讨论】:

【参考方案2】:
SELECT * FROM table1
WHERE test = 1 
AND ID LIKE "AO1%"
AND ID NOT IN (SELECT ID from table2)

【讨论】:

以上是关于MySQL中2个表中的多个WHERE条件的主要内容,如果未能解决你的问题,请参考以下文章

多个MYSQL表,如何批量查询数据

联结表

Mysql - 将值插入具有未知主键的多个表中

在 C# 中有效地将数据插入 MySQL 中的多个表中

多个表关联表如何查询?

MySQL INSERT ... 从 1 个表中选择 2 个表