说有这样的表:
mysql> SELECT * FROM tags; +---------+--------+ | post_id | tag_id | +---------+--------+ | 1 | 2 | | 1 | 3 | | 1 | 1 | | 2 | 1 | | 2 | 2 | +---------+--------+ 5 rows in set (0.00 sec) 字段名称很容易解释。我想选择post_id同时具有1和3 tag_id的,因此在此示例中仅1。我想到了类似的 SELECT post_id FROM tags GROUP BY post_id HAVING ...清单tag_id,之后我想列出该组中存在的。我怎么做?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
如果没有任何唯一约束,请尝试:
SELECT post_id FROM tags WHERE tag_id = 1 OR tag_id = 3 GROUP BY post_id HAVING count(DISTINCT tag_id) = 2; HAVING如果仅尝试检测两个tag_id值,请使用此子句:
HAVING MIN(tag_id) <> MAX(tag_id) 如果post_id和tag_id都具有唯一约束,那么这也应该起作用:
SELECT post_id FROM tags WHERE tag_id = 1 OR tag_id = 3 GROUP BY post_id HAVING count(*) = 2;来源:stack overflow