gpt4 book ai didi

MySQL Max 函数混合行

转载 作者:搜寻专家 更新时间:2023-10-30 23:13:47 24 4
gpt4 key购买 nike

似乎我在使用 MAX 时遇到了基本问题 - 我认为它混合了行的内容。

有一个 View :

id   rev   state
1 100 pass
1 99 fail
1 98 fail

结果应该是:

id   rev   state
1 100 **pass**

但我在下面的查询中得到了这个

id   rev   state
1 100 **fail**

SELECT r.id, r.state, MAX(r.revision)
FROM VIEW_data r
WHERE r.id=1

最佳答案

您需要一个带有聚合 MAX()GROUP BY 子句。 MySQL 允许您省略它(其他 RDBMS 会报告错误的地方)但结果不确定,正如您所看到的那样。这可以通过加入一个子查询来处理,该子查询返回每个 id 的分组 rev

SELECT 
r.id,
r.state,
maxrev.rev
FROM
VIEW_data r
/* INNER JOIN against subquery which returns MAX(rev) per id only */
JOIN (
SELECT id, MAX(rev) AS rev
FROM VIEW_data GROUP BY id
/* JOIN is on both id and rev to pull the correct value for state */
) maxrev ON r.id = maxrev.id AND r.rev = maxrev.rev
WHERE r.id = 1

http://sqlfiddle.com/#!2/4f651/8

以上将返回任何 id 的最大 rev 值。如果您确定您只需要由 WHERE 子句筛选的一行,而不是每组 MAX(),请查看另一行使用 ORDER BYLIMIT 的答案。

关于MySQL Max 函数混合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com