2017-10-15 58 views
0

我想要一条SQL语句来获取具有最小值的行。如何选择具有最小值的不同行

数据库

ig_idx ig_team1 ig_team2 rl_league rl_image   rl_sports ig_status cnt 
410296 aaaaa  xxxxx  BRA D2  icon_BRA D2.png 7   S   3 
410298 aaaaa  xxxxx  BRA D2  icon_BRA D2.png 7   S   3 
410299 aaaaa  yyyyy  BRA D2  icon_BRA D2.png 7   S   3 
410301 bbbbb  yyyyy  BRA D2  icon_BRA D2.png 7   S   2 
410304 bbbbb  yyyyy  BRA D2  icon_BRA D2.png 7   S   2 
410306 ccccc  zzzzz  BRA D2  icon_BRA D2.png 7   S   2 

如何选择具有在点列中的最小值的ID?像这样...

ig_idx ig_team1 ig_team2 rl_league rl_image   rl_sports ig_status cnt 
410296 aaaaa  xxxxx  BRA D2  icon_BRA D2.png 7   S   3 
410301 bbbbb  yyyyy  BRA D2  icon_BRA D2.png 7   S   2 
410306 ccccc  zzzzz  BRA D2  icon_BRA D2.png 7   S   2 
+0

没有 '点',然而,在[这位前辈问题](https://stackoverflow.com/questions/15291506/sql-query-to-select-distinct-row-with-minimum-value)。 – RobertL

回答

2

使用row_number()

select t.* 
from (select t.*, 
      row_number() over (partition by ig_team order by ig_idx asc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
0

看起来像它一样简单:

SELECT MIN(ig_idx), ig_team1, ig_team2, r1_league, r1_image, r1_sports, ig_status, cnt 
FROM t 
GROUP BY ig_team1, ig_team2, r1_league, r1_image, r1_sports, ig_status, cnt