SELECT同一表中多列值的最大索引?

时间:2017-12-06 07:53:54

标签: mysql

我有以下数据库结构:

post_id | language | index

数据如下:

1  |  en  |  1  
1  |  en  |  2  
1  |  en  |  3     

1  |  fr |  1  
1  |  fr |  2

language是一个短代码,如enfr等。index是一个递增的整数。数据库中至少有一个语言代码。

我需要为每个index获取language的最大值。

目前我获得了所有语言的帖子

SELECT DISTINCT(language) FROM my_table WHERE post_id = ?

然后迭代语言数组以获取每个language

的最大值
SELECT MAX(index) FROM my_table WHERE post_id = ? AND language = 'language_code'

有没有办法只执行一个查询来实现这个结果?

结果如下:

1  |  en  |  3  
1  |  fr  |  2  

2 个答案:

答案 0 :(得分:1)

您可以使用GROUP BY来实现这一目标 您可以查看此链接,了解有关使用GROUP BY的{​​{1}}使用情况的更多信息:SQL MAX() with group by

MAX

此查询的结果将是与最大索引关联的所有语言。

SELECT post_id, language, MAX(index) 
  FROM my_table 
  GROUP BY post_id, language;

希望这有帮助!

答案 1 :(得分:0)

SQL GROUP BY 子句用于根据 GROUP BY 子句中指定的列的不同值对行进行分组

根据上述说明作为解决方案,请尝试执行以下 SQL SELECT QUERY

SELECT post_id,language, max(index)
FROM my_table group by language