【发布时间】:2015-09-28 15:49:26
【问题描述】:
如果我有一个包含名字、姓氏(复合唯一)和外卖选择的表格,例如
+------+-------+---------+
|First | Last | Food |
+------+-------+---------+
|Bob | Smith | Pizza |
|Bob | Smith | Chips |
|Jim | Smith | Pizza |
|Lisa | Jones | Pizza |
|Lisa | Jones | Chinese |
|Lisa | James | Mexican |
|Eric | White | Chinese |
|Eric | White | Chips |
+------+-------+---------+
我想要与至少有两种食物偏好的人对应的所有行,其中之一是披萨。即
的结果+------+-------+---------+
|First | Last | Food |
+------+-------+---------+
|Bob | Smith | Pizza |
|Bob | Smith | Chips |
|Lisa | Jones | Pizza |
|Lisa | Jones | Chinese |
+------+-------+---------+
我已经尝试通过 ... count(*) > 1 加入... group,但它并不能完全按照我的意愿工作。
任何帮助表示赞赏,谢谢。
【问题讨论】:
-
你需要的是先分组,最后分组,然后有食物计数> 1
-
请注意,您有两个答案。由于您同时标记了 sql-server 和 mysql,因此响应会有所不同。您应该标记适当的 DBMS,因为它们不是一回事。此外,您确实应该研究标准化,因为您发布的内容未标准化。对名字和姓氏组合的唯一约束是一个糟糕的设计,因为它会阻止两个人使用相同的名字。
-
“Eric”不应该也出现在您的预期结果中吗?
-
@McAdam331,我认为 OP 不会希望 Eric 返回,因为披萨不是食物偏好之一。我相信 OP 希望有超过 1 种食物偏好的人,其中一种偏好是披萨。
-
@ander2ed 很好。我相应地编辑了我的答案。
标签: mysql sql-server