Don*_*Msc 5 mysql max aggregate-functions
看看下面名为"文章"的MySQL表:
+----+-----------+---------+------------------------+--------------------------+
| id | articleId | version | title | content |
+----+-----------+---------+------------------------+--------------------------+
| 1 | 1 | 0.0 | ArticleNo.1 title v0.0 | ArticleNo.1 content v0.0 |
| 2 | 1 | 1.0 | ArticleNo.1 title v1.0 | ArticleNo.1 content v1.0 |
| 3 | 1 | 1.5 | ArticleNo.1 title v1.5 | ArticleNo.1 content v1.5 |
| 4 | 1 | 2.0 | ArticleNo.1 title v2.0 | ArticleNo.1 content v2.0 |
| 5 | 2 | 1.0 | ArticleNo.2 title v1.0 | ArticleNo.2 content v1.0 |
| 6 | 2 | 2.0 | ArticleNo.2 title v2.0 | ArticleNo.2 content v2.0 |
+----+-----------+---------+------------------------+--------------------------+
Run Code Online (Sandbox Code Playgroud)
我试图提出一个查询来返回Articles.id,其中Articles.version是最大数字.
实际的文章表包含10,000多个条目.
所以在这个例子中,我只想要返回Articles.id 4和6.我一直在寻找关键字distinct和函数max(),但似乎无法确定它.
任何建议赞赏......
从MySQL手册中,这可以解决问题:
SELECT a1.id
FROM Articles a1
LEFT JOIN Articles a2 ON a1.articleId = a2.articleId AND a1.version < a2.version
WHERE a2.articleId IS NULL;
Run Code Online (Sandbox Code Playgroud)
从链接手册:
的
LEFT JOIN基础上工作,当s1.pricea1.version在它的最大值最低价值,没有s2.pricea2.version用一个更大较小的价值因而相应的s2.articlea2.articleId价值是NULL.
(我编辑了他们的文字符合您的情况.)
您需要在此处进行子查询:
SELECT a.id, a.version
FROM articles a
WHERE a.version = (
SELECT MAX(version)
FROM articles b
WHERE b.articleId = a.articleId
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |