我正在尝试编写一个查询,只要连接表 B 中的列包含表 A 中单个匹配行的多个不同值时,就从表 A 返回一行。(A -> B 是 1 -> 多关系。)我建立在上下文中演示这一点的 SQL 小提琴:http ://sqlfiddle.com/#!6/83952/1
在这个小提琴中,表的design
列对于每个具有相同的列perf_ticket_type
应该是相同的,但我试图只选择它没有的实例。因此,对于3,我当前使用的查询返回了多个唯一值。ticket_type
perf_id
perf_id
design
我想要的结果是表的两列performance
仅用于perf_id
3,基于连接表中的多个design
值perf_id
。
过去我对 GROUP BY 的理解感到很沮丧,所以我不确定我是否可以在这里做一些不同的事情来获得我想要的结果。目前,我想我可以将小提琴中的内容选择到临时表中,然后使用 a对其进行另一次选择以获得我想要的内容(根据选择行,其中列包含多个记录中的相同数据),但这似乎是一个额外的步骤。GROUP BY perf_id HAVING COUNT(*) > 1
你的想法是对的,但你需要
HAVING COUNT(DISTINCT design) > 1
像这样: