2017-07-16 72 views
0

不能嵌套查询语句中找出原因ORDER BY不工作...例如:如何获得ORDER BY嵌套查询语句中的工作

通过声明一个正常的选择顺序正常工作:

select id from posts where zid=5 order by id desc; 

但声明嵌套选择顺序不起作用?:

select id from posts where zid in (select id from zids where qid=57 order by id desc); 

难道是不允许的?它不会产生任何错误,但从ASC &更改DESC不会改变任何内容...

+0

如果没有什么关系呢?为什么不将ORDER BY移动到外部SELECT? – Nick

+0

是的,它不重要。如果我将订单移动到外部选择,我会根据创建时间而不是订单所需的顺序,显示不同的订单。 –

+0

内部SELECT不会确定外部SELECT的顺序,因为您已经发现将额外字段放在外部ORDER BY中以获取正确的顺序。 – Nick

回答

2

是不允许的?

不,它不是,而且根本没有意义对嵌套结果集进行排序。你应该具有order by在外部查询像

select id from posts 
where zid in (select id from zids where qid=57) 
order by id desc; 

同样,你可以考虑用JOIN查询替换现有的查询关键词,比如

select id from posts 
JOIN zids ON posts.zid = zids.id 
where zids.qid=57 
order by zids.id desc; 
+0

感谢兄弟,这个伎俩。不胜感激! –