我有以下数据库结构:
post_id | language | index
数据如下:
1 | en | 1
1 | en | 2
1 | en | 3
1 | fr | 1
1 | fr | 2
language
是一个短代码,如en
,fr
等。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
答案 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