我想在一个查询中获取表的最后两行作为新数据和以前的数据
我得到了
select tbl.x , tbl2.x as last_x
from tbl left join tbl tbl2 ON tbl.id!= tbl2.id
order by tbl.id desc , tbl2.id desc limit 1
它工作正常,但我认为它在大数据库中可能会变慢
有什么办法可以让它更快吗?
最佳答案
LIMIT 应该在基本子查询中工作,因此下面的查询可能更有效
SELECT Sub1.x , Sub2.x as last_x
FROM (SELECT x FROM tbl ORDER BY tbl.id DESC LIMIT 1) Sub1
CROSS JOIN (SELECT x FROM tbl ORDER BY tbl.id DESC LIMIT 2, 1) Sub2
关于mysql - 优化查询 : joining a table on itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15898410/