作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道 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 [..]
)
我想从 table_b 中选择包含在 table_a 中选择的所有值的项目。换句话说,前面的查询是用 OR 选择的,我希望它是 AND。
最佳答案
IN 就像一个 OR 运算符。这不是 AND。所以它更像是从表 B 中获取 ID 为 1、2 或 3 的行。AND 运算符无论如何都不起作用,因为具有某个 ID 的特定行只有一个值,而不是同时有多个值。 AND 表示特定行 ID 应具有多个值。
如果我明白你想做什么,那么你应该在这两个表上使用 INNER JOIN:
SELECT b.ID
FROM TableB AS b
JOIN TableA AS a
ON (a.ID = b.ID)
这样,您将从 TableB 中获取那些在 TableA 中具有对应行的行。如果您的表是相关的并且 TableA 是 TableB 的子集(因此 TableB 是主键,TableA 中的 ID 是指向 TableB 的外键),那么这就是适合您的解决方案。
当然,您必须更改表名和表列。
检查 MySql documentation关于 JOIN 语法。
关于Mysql "IN"作为 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522461/
我是一名优秀的程序员,十分优秀!