日期:2014-05-16  浏览次数:20668 次

都是一个commit里的,这两种写法哪个更好
需求是查一个max(id),再根据这个max(id)读出对应的数据
SELECT @x AS my_rank,item_id,item_n FROM sec2_reward,(SELECT @x:=(SELECT MAX(id) FROM sec2_reward WHERE id<=11)) r WHERE id=@x;

SELECT MAX(id) as max_id FROM sec2_reward WHERE id<=?;
SELECT item_id,item_n FROM sec2_reward WHERE id=max_id;

第一种explain的时候似乎有子查询
都是一个commit里的,不知哪种写法更好

------解决方案--------------------
一样。效率上应该没有什么差别。
------解决方案--------------------
第二种容易维护
------解决方案--------------------
效率没什么差别,个人倾向第二种,可读性强