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

标签 mysql

我有以下数据库结构:

post_id | language | index

数据如下:

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

1  |  fr |  1  
1  |  fr |  2

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

我需要获取每种语言index最大值。

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

SELECT DISTINCT(language) FROM my_table WHERE post_id = ?

然后迭代语言数组以获取每种语言的最大值

SELECT MAX(index) FROM my_table WHERE post_id = ? AND language = 'language_code'

有没有一种方法可以只执行一个查询来实现这一结果?

结果应如下所示:

1  |  en  |  3  
1  |  fr  |  2  

最佳答案

您可以使用GROUP BY来实现此目的。
您可以查看此链接,了解有关使用 GROUP BYMAX 的更多信息:SQL MAX() with group by

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

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

post_id | language | MAX(index)
1 | en |  3   
1 | fr |  2

希望这有帮助!

关于mysql - SELECT 同一表中多个列值的最大索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669361/

相关文章:

java - 似乎无法登录或连接到 MySQL 数据库

MySQL - 选择不在分组依据中的列

php - 如何根据 scorm 完成的结果隐藏/显示 moodle 中的事件

Mysql 选择唯一值+第一次出现+最后一次出现

MySQL更新查询

mysql - 创建函数返回 double 值

mysql - 如何在两列上设置唯一键并在 MySQL 中仍然具有自动递增的主索引?

MySQL 子查询(或 UNION?)

mysql - 如何限制 SQL 查询的结果?

mysql - 我们如何获得两个表上的值的总和?