我有一个带有下表的 mysql 数据库 (item_preset):

+-----+-----------+---------+-------+
| id  | preset_id | item_id | value |
+-----+-----------+---------+-------+
| 1   | 1         | 1       | 2     |
| 2   | 1         | 2       | 1     |
| 3   | 1         | 4       | 60    |
| 4   | 1         | 3       | 16    |
| 5   | 1         | 3       | 17    |
| 6   | 1         | 3       | 18    |
| 7   | 1         | 3       | 25    |
| 8   | 1         | 3       | 26    |
| 9   | 1         | 3       | 27    |
| 10  | 2         | 1       | 3     |
| 11  | 2         | 2       | 0     |
| 12  | 2         | 4       | 0     |
| 13  | 2         | 3       | 16    |
| 14  | 2         | 3       | 17    |
| 15  | 2         | 3       | 19    |
| 16  | 2         | 3       | 20    |
| 17  | 2         | 3       | 21    |
| 18  | 3         | 1       | 2     |
| 19  | 3         | 2       | 0     |
| 20  | 3         | 4       | 0     |
| 21  | 3         | 3       | 25    |
| 22  | 3         | 3       | 28    |
| 23  | 4         | 1       | 1     |
| 24  | 4         | 2       | 1     |
| 25  | 4         | 4       | 120   |
| 26  | 4         | 3       | 16    |
| 27  | 4         | 3       | 17    |
| 28  | 4         | 3       | 18    |
| 29  | 4         | 3       | 22    |
| 30  | 4         | 3       | 23    |
| 31  | 4         | 3       | 24    |
| 32  | 6         | 1       | 3     |
| 33  | 6         | 2       | 1     |
| 34  | 6         | 4       | 90    |
| 35  | 6         | 3       | 18    |
| 36  | 6         | 3       | 22    |
| 37  | 6         | 3       | 23    |
| 38  | 6         | 3       | 24    |
| 39  | 6         | 3       | 29    |
| 40  | 6         | 3       | 30    |
+-----+-----------+---------+-------+

我想要做的是根据多行的条件获取不同的 preset_id。
例如,要获得 preset_id 1,我需要满足所有条件(item_id = 1 和 value_id = 2)、(item_id = 2 和 value = 1)等...

我曾尝试使用以下内容:
从 item_preset 中选择不同的 preset_id 其中 (item_id = 1 and value = 2) and (item_id = 2 and value = 1) and (item_id = 4 and value = 60);

但得到一个空集。如果我尝试使用 Or's 而不是,我会得到与任何条件匹配的所有预设 ID。

有任何想法吗?

谢谢

最佳答案

你可以尝试这样的事情:

    select distinct preset_id from item_preset
where preset_id in (select preset_id from item_preset where item_id = 1 and value = 2)
and preset_id in (select preset_id from item_preset where item_id = 2 and value = 1)
and preset_id in (select preset_id from item_preset where item_id = 4 and value = 60);

关于多行条件下的mysql不同列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12926135/

10-10 10:55
查看更多