我花了几个小时寻找答案,但我认为我可能没有朝着正确的方向寻找.这是我的问题:
假设我有一个简单的表格,如下所示:
entity_id delta option_id
-------------------------------
1 0 10
1 1 11
2 0 10
2 1 11
2 2 12
我有一个多值字段,我想找到具有option_id(10,11,12)的,它应该返回entity_id =2.我尝试使用IN,但它不够“精确”,我的意思是我可以搜索option_id(11,12),它仍然会返回我entity_id 2,这不是我想要的.
我已经尝试过使用ALL,但是我认为这不是我想要的.
非常感谢你的帮助.我很确定答案在其他人的帖子中,但我一直找不到.
埃德
解决方法:
您可以在此处使用GROUP BY和HAVING查找包含所有要查找项目的元素.
SELECT t.entity_id
FROM your_table t
WHERE t.option_id IN (10,11,12)
GROUP BY t.entity_id
HAVING COUNT(DISTINCT t.option_id) = 3; /* because there are 3 elements in the IN clause */
标签:mysql
来源: https://codeday.me/bug/20191119/2035966.html