mysql-从类似结果中筛选出每组除一个结果外的所有结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-从类似结果中筛选出每组除一个结果外的所有结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1752字,纯文字阅读大概需要3分钟。
内容图文
因此,我有一个表格,列出所有总理,他们任职的年份以及参加的政党.
我需要这三点信息;他们的名字,他们的第一年任期和最后一个任期的聚会(一些交换聚会).
桌子看起来像这样
min_nr|pm_name |party |yr_comm
----------------------------------------------
1 Barton E Protectionist 1901
.
.
.
11 Hughes W M Labour 1915
12 Hughes W M National Labour 1916
13 Hughes W M Nationalists 1917
14 Hughes W M Nationalists 1918
.
.
我已经进行了很多搜索,但是我不知道如何键入它来得到结果.
胡先生在评论部分进行了此操作.事实证明,我不了解多个JOINS和ON中AND的正确用法.
SELECT a.pm_name, a.party, c.minYear
FROM Table1 a
INNER JOIN
(
SELECT pm_name, MAX(yr_comm) maxYear
FROM table1
GROUP BY pm_name
) b ON a.pm_name = b.pm_name AND
a.yr_comm = b.maxYear
INNER JOIN
(
SELECT pm_name, MIN(yr_comm) minYear
FROM table1
GROUP BY pm_name
) c ON a.pm_name = c.Pm_name
编辑,很多编辑
解决方法:
尝试子查询以获取每个总理的最长年份.如果要获取所有列,则此方法有效.
SELECT a.*
FROM tableName a INNER JOIN
(
SELECT ID, MAX(`year`) maxYear
FROM tableName
GROUP BY ID
) b ON a.ID = b.ID AND
a.`Year` = b.maxYear
tableName =>将其更改为表格的名称
ID =>将其更改为主键
年份=>将其更改为您所在年份的列名称.
但是,如果您只想获得总理的身份证,以及他们的最后一年是哪一年.您可以直接进行操作而无需子查询.
SELECT ID, MAX(`year`) finalYear
FROM tableName
GROUP BY ID
PS:如果此答案仍不清楚,请添加表的架构,示例记录和所需的结果,我们可以进行处理.谢谢.
更新1
SELECT a.pm_name, a.party, c.minYear
FROM Table1 a
INNER JOIN
(
SELECT pm_name, MAX(yr_comm) maxYear
FROM table1
GROUP BY pm_name
) b ON a.pm_name = b.pm_name AND
a.yr_comm = b.maxYear
INNER JOIN
(
SELECT pm_name, MIN(yr_comm) minYear
FROM table1
GROUP BY pm_name
) c ON a.pm_name = c.Pm_name
内容总结
以上是互联网集市为您收集整理的mysql-从类似结果中筛选出每组除一个结果外的所有结果全部内容,希望文章能够帮你解决mysql-从类似结果中筛选出每组除一个结果外的所有结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。