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/

相关文章:

mysql utf8mb4 似乎无法识别像💐🌹这样的表情符号

sql - Mysqldump 和 gzip 多个带有 where 子句的表在 PhPMyAdmin 中不起作用

mysql - SQL 在同一个表上使用 JOIN 更新行

PHP Mysql 不区分大小写的表选择

PHP 将数组元素添加到数据库不起作用

mysql - 将代码从 Oracle 8i 转换为 MySQL

php - 使用列的值保存变量

MySQL - 从列相同的第 1 行中减去第 2 行

mysql 错误 2002 HY00

mysql - 我还需要在nodejs中使用 'select ... for update'吗?