如何使mysql要求选择所有值,其中包含列表的所有元素。
我有这样的表:

+--------+------------+
| carID  | serviceID  |
+--------+------------+
|   1    |      12    |
+--------+------------+
|   1    |      13    |
+--------+------------+
|   1    |      15    |
+--------+------------+
|   2    |      12    |
+--------+------------+
|   3    |      13    |
+--------+------------+
|   3    |      15    |
+--------+------------+


我提出这样的要求:

SELECT `carID` FROM `car_services` WHERE `carID` in (1, 2, 3) AND `serviceID` in (12, 13, 15);


但它会返回所有车,但是我只需要带有carID = 1的车,因为只有这辆车适合这种情况(支持所有服务12、13、15)。

有任何想法吗?

最佳答案

一种简单的方法是group byhaving

SELECT `carID`
FROM `car_services`
WHERE `carID` in (1, 2, 3) AND `serviceID` in (12, 13, 15)
group by carID
having count(*) = 3
;

关于mysql - mysql选择与列表中所有元素一致的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30732249/

10-11 02:23