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
的行,其中三个首字母等于A01
,test
字段为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
A013
和 A021
。我尝试使用LEFT(ID,3)
来获得ID
和A01
,但是,我无法实现我想要的。
如何只过滤 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条件的主要内容,如果未能解决你的问题,请参考以下文章