gpt4 book ai didi

mysql - 从相似结果中过滤掉每组除一个结果以外的所有结果

转载 作者:可可西里 更新时间:2023-11-01 08:06:42 26 4
gpt4 key购买 nike

所以我有一个表格,其中列出了所有 prime_ministers 以及他们任职的 year 以及他们参加的 party

我需要这 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 和 AND 在 ON 中的正确用法。

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 => 改成主键
Year => 将其更改为您所在年份的列名。

但是如果你只想获得总理的 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

SQLFiddle Demo

关于mysql - 从相似结果中过滤掉每组除一个结果以外的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12558099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com