表:
cat_name / topic
cat1 topic1
cat3 topic1
cat6 topic2
cat4 topic3
cat3 topic3
cat3 topic4
SELECT * from all_cat
WHERE cat_name = "cat4" OR ...
结果应为:
cat4 topic3
cat3 topic4
如何选择(在MySQL中)所有主题'表单类别4,甚至那些只属于类别3的例子(例如:作为topic4,tipoc3不是因为他也属于类别4)。
我找到了4组中的所有主题,但主题是一个单元,有3组见面不知道
答案 0 :(得分:1)
免责声明:我没有可以测试的数据库,这些只是让您入门的建议。
这些示例假设您有某种约束来防止重复行。
如果您只想要列表中出现一次的主题(即仅属于一个类别),您可以使用:
select topic, count(*) from all_cats group by topic having count(*) = 1
如果您想要所有主题,但只希望它们返回一次:</ p>
select distinct topic from all_cats
如果您特别需要来自cat4和cat3的所有主题,其中cat4中不存在该主题:
select topic from all_cats where cat_name = 'cat4'
union all
select topic from all_cats where cat_name = 'cat3' and topic not in
(select topic from all_cats where cat_name = 'cat4')
如果您想要一个仅属于cat4或仅属于cat3(独家或)的主题列表,您可以使用我之前发布的having语句的变体:
select topic, count(*) from all_cats where cat_name in ('cat3', 'cat4') group by topic having count(*) = 1