两种查询语句哪个更好?
它们输出相同的结果,只是一个在
我已经创建了一个带有示例的 sqlfiddle: http://sqlfiddle.com/#!2/76001/62(这个想法是获取与给定用户相关的“主”实体的最大版本)。如果您有其他想法(我正在使用mysql,因此无法使用Windows函数),谢谢。
where in
中进行条件判断,而另一个在inner join
中进行。select uv.* from version v inner join user_version uv ON v.id=uv.version_id
WHERE (v.number, v.master_id) IN (
select max(v.number) as number, v.master_id
from version v inner join user_version uv ON v.id=uv.version_id group by v.master_id);
并且
select * from user_version uv
inner join version v on v.id=uv.version_id and v.number
inner join (
select uv2.user_id, max(v2.number) maxNumber, v2.master_id master_id, v2.id version_id from version v2
inner join user_version uv2 on v2.id=uv2.version_id group by v2.master_id ) test
on test.master_id=v.master_id and test.maxNumber=v.number ;
我已经创建了一个带有示例的 sqlfiddle: http://sqlfiddle.com/#!2/76001/62(这个想法是获取与给定用户相关的“主”实体的最大版本)。如果您有其他想法(我正在使用mysql,因此无法使用Windows函数),谢谢。