所以我有下面的表和php中的一个变量具有这些值:14,16
如何检查表中是否存在上述数字组合?上面的组合存在id 3.我不想检查数字的顺序(例如“16,14”或“14,16”)
我希望你不要混淆!
答案 0 :(得分:2)
您需要GROUP BY
COUNT
和HAVING
:
SELECT id
FROM tablename
WHERE optid IN(14, 16)
GROUP BY id
HAVING COUNT(DISTINCT optid) = 2;
WHERE optid IN(14, 16)
将确保ID具有这些数字。COUNT DISTINCT
会删除所有ID,只需要有两个optid
。结果:
| id |
|----|
| 3 |
| 4 |
请注意:此查询会为您提供至少id
的那些14 and 16
。所以它会给你3和4。
但是如果你想要那些正好有14和16而且没有更多的东西,那么试试这个:
SELECT id
FROM tablename
WHERE optid IN(14, 16)
AND id not in (SELECT id from tablename where optid not in(14,16))
GROUP BY id
HAVING COUNT(DISTINCT optid) = 2;
这会给你:
| id |
|----|
| 3 |