MySQL 获取两个不同列中的键值对

MySQL fetching a key value pair which are in two different columns

表 1:有 3 列,分别是 ID、键和值。

+----+-----+-------+
| ID | KEY | VALUE |
+----+-----+-------+
| 1  | 1   | 1     |
| 2  | 1   | 2     |
| 3  | 2   | 1     |
| 4  | 2   | 2     |
| 5  | 3   | 1     |
| 6  | 3   | 2     |
| 7  | 4   | 1     |
| 8  | 4   | 2     |
| 9  | 5   | 1     |
| 10 | 5   | 2     |
+----+-----+-------+

这个 table 键和值都可以重复,但两者的组合是唯一的。

如果我想根据键值对查询多行并且 NOT 在 id 上。我该怎么做?

注意:我知道我能做到

SELECT * from Table1 
WHERE (key=1 AND value=2) OR 
      (key=1 AND value=1) OR 
      (key=5 AND value=1);

我希望有更好更简洁的东西,因为我有大约 40K 个键值对需要查询。

除了您已经在做的事情之外,没有其他正确的方法。您应该比较唯一列,在您的情况下是 ID。是的,您可以使用 IN 运算符来缩短它来比较行构造函数说

SELECT * from Table1 
WHERE (`key`, `value`) IN ((1,2),(1,1),(5,1));

有关相同内容的更多信息,请参阅 MySQL Documentation