mysql – SQL选择跨多个列包含重复数据的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL选择跨多个列包含重复数据的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1402字,纯文字阅读大概需要3分钟。
内容图文
如果我有一个包含名字,姓氏(复合唯一)和外卖选择的表格,例如
+------+-------+---------+
|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 |
+------+-------+---------+
我已经尝试了一个加入…小组…有计数(*)> 1但它不是我想要的工作.
任何帮助表示感谢,谢谢.
解决方法:
另一种方式:SQL Server 2012中的P.
SELECT FIRST,LAST,FOOD FROM(
SELECT A.FIRST,A.LAST,B.FOOD,
COUNT(*) OVER (PARTITION BY A.FIRST,A.LAST ORDER BY A.FIRST,A.LAST DESC) AS 'POS'
FROM TEST_FOOD A
INNER JOIN TEST_FOOD B
ON A.FIRST = B.FIRST
AND A.LAST = B.LAST
WHERE A.FOOD = 'PIZZA') TB WHERE POS = 2
在SQL Server 2005中另一种更标准的方式,第一种方法更快,但受MSSQL版本的限制.
SELECT C.FIRST,C.LAST,C.FOOD FROM
(
SELECT A.FIRST,A.LAST FROM TEST_FOOD A
INNER JOIN TEST_FOOD B
ON A.FIRST = B.FIRST
AND A.LAST = B.LAST
WHERE B.FOOD = 'PIZZA'
GROUP BY A.FIRST,A.LAST
HAVING COUNT(*) = 2
) TB INNER JOIN
TEST_FOOD C
ON TB.FIRST = C.FIRST
AND TB.LAST = C.LAST
内容总结
以上是互联网集市为您收集整理的mysql – SQL选择跨多个列包含重复数据的行全部内容,希望文章能够帮你解决mysql – SQL选择跨多个列包含重复数据的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。