Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从相似的结果中筛选出每组除一个结果外的所有结果_Mysql_Sql - Fatal编程技术网

Mysql 从相似的结果中筛选出每组除一个结果外的所有结果

Mysql 从相似的结果中筛选出每组除一个结果外的所有结果,mysql,sql,Mysql,Sql,因此,我有一个表格,列出了所有的首相,以及他们任职的年份,以及他们参加的政党 我需要3位信息;他们的姓名,他们任职的第一年,以及任职的最后一年政党(一些交换政党) 这张桌子看起来有点像这样 min_nr|pm_name |party |yr_comm ---------------------------------------------- 1 Barton E Protectionist 1901 . . . 11

因此,我有一个表格,列出了所有的
首相
,以及他们任职的
年份
,以及他们参加的
政党

我需要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  
.  
.  
我已经做了很多搜索,但我不知道如何键入这个来获得结果

胡先生在评论部分这样做了。事实证明,我不理解多重连接以及和的正确用法

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

但是如果你只想得到首相的身份证,他们的最后一年是哪一年。您可以不使用子查询直接执行此操作

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

好吧,你说的不太管用,但是通过谷歌搜索你的代码并对其进行修改,我终于可以找到一种方法让它工作了。我将重新键入我的问题,以便对其他人更有用。@Talisin那么在你更新的问题中,结果会是什么?总理姓名,上任第一年,去年执政党。哦,对了,在我展示的表格部分,将是巴顿E,保护主义者,1901年和休斯W M,民族主义者,1915年。我遇到的麻烦是,民族主义者应该代表最后的拥抱,而1915年代表拳头。哇,谢谢,就是这样。好吧,我要好好读书,开始试着更好地理解。非常感谢您的时间和帮助。那么在您更新的问题中,结果会是什么?