我想知道mysql IN是否可以用作AND语句:
SELECT item_id
FROM table_items as a i
WHERE i.attribute_id
IN (
SELECT attribute_id
FROM table_attribute as a
WHERE [..]
)
Run Code Online (Sandbox Code Playgroud)
我想从table_b中选择包含table_a中所选值的所有项目.换句话说,先前的查询是使用OR进行选择,我希望它是AND.
IN就像一个OR运算符.这不是一个AND.因此,更像是从表B获取行,其中ID为1,2或3. AND运算符无论如何都不起作用,因为具有某个ID的某个行只有一个值而不是同时具有多个值.并且意味着特定的行ID应该具有多个值.
如果我理解你想做什么,那么你应该在这两个表上使用INNER JOIN:
SELECT b.ID
FROM TableB AS b
JOIN TableA AS a
ON (a.ID = b.ID)
Run Code Online (Sandbox Code Playgroud)
这样,您将从TableB中获取TableA中具有相应行的那些行.如果您的表是相关的并且TableA是TableB的子集(因此TableB是主键,TableA中的ID是指向TableB的外键),那么这是您的解决方案.
当然,您必须更改表名和表列.
检查有关JOIN语法的MySql文档.
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |