【发布时间】:2021-10-29 08:41:49
【问题描述】:
我在 MySQL 中有一个表,主键是这样的复合表:
+--------------+----+------------------------------+
| fk_something | id | label |
+--------------+----+------------------------------+
| 1 | 1 | First record of something 1 |
| 2 | 1 | First record of something 2 |
| 2 | 2 | Second record of something 2 |
| 1 | 2 | Second record of something 1 |
| 2 | 3 | Third record of something 2 |
+--------------+----+------------------------------+
但现在我有一个棘手的查询要做,我想使用“IN”过滤器检索例如 2-1 和 1-2 记录...我该怎么做?
我试过类似的东西:
SELECT * FROM my_table WHERE id IN (1, 2) AND fk_something IN (2, 1)
但它也给了我 1-1 和 2-2 记录...
【问题讨论】:
-
好吧,您可以简单地添加另一个过滤器,例如
AND id <> fk_something -
@IVOGELOV 在这种情况下是的,你可以,但这不是最难查询的可行解决方案
-
@ÁlvaroGonzález 实际上我正在使用子查询来检索一些特定的 ID ......我可以准确地解释我想要实现的目标,但我想保持简单并理解跨度>
-
我错了,
(a, b) IN ()语法根本不需要子查询。查看您的第一个答案。
标签: mysql composite-primary-key