这是对这篇文章的澄清:
SQL select only rows with max value on a column
在接受的答案中,嵌套查询是用于最大计算的查询,外部查询连接到该查询。我尝试颠倒顺序,但遇到语法错误。
查询:
(SELECT id, MAX(rev) mrev
FROM docs
GROUP BY id) b
join (select id, rev, content from docs) d
on b.id = d.id and d.rev = b.rev
我遇到的错误是这样的:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b join (select id, rev, content from docs) d on b.id = d.id and d.rev = b.rev' at line 3
这里的顺序重要吗?
最佳答案
您可以像这样编写该查询。
SELECT d.*
FROM
(
SELECT id, MAX(rev) AS maxrev
FROM docs
GROUP BY id
) b
JOIN docs AS d
ON (b.id = d.id AND d.rev = b.maxrev)
注意它如何从子查询中选择最大转速。而子查询只是简单地连接到表。
另一种写法:
select d.*
from docs d
join (
select id, max(rev) maxrev
from docs
group by id
) b
on b.id = d.id and b.maxrev = d.rev
或者如果你敢于使用 EXISTS :
SELECT *
FROM docs AS d
WHERE EXISTS (
SELECT 1
FROM docs AS b
WHERE b.id = d.id
GROUP BY b.id
HAVING d.rev = MAX(b.rev)
);
关于mysql - sql嵌套顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51572295/