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。
表 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。