1250 - 表' sub'其中一个SELECT不能在全局ORDER子句中使用

时间:2014-06-20 07:43:50

标签: php mysql sql

我正在尝试建立一个用于学习目的的聊天网站,因此在此过程中,我希望最后30条消息按升序显示w.r.t.时间。比如,最底层的最新消息,最顶层的消息。经过大量的谷歌搜索,但找不到任何可以帮助的解决方案,我不得不问这个。

这是MySQL声明。

它以降序返回我想要的数据。也就是说,顶部是最新的。即使我将ASC更改为DESC,也没有任何反应。

SELECT * FROM (SELECT msg,sender FROM chatlogs WHERE user1='userone' AND user2='usertwo' ORDER BY 'timeofmsg' DESC LIMIT 30) sub ORDER BY 'sub.timeofmsg' ASC

经过大量测试并尝试解决方案后,我自己发现当我尝试使用PHPMyAdmin的UI对结果表进行排序时,会抛出以下错误。事实证明这是一个MySQL的错误。那么我该如何解决这个问题呢?

1250 - 其中一个SELECT的表'sub'不能用于全局ORDER子句

如果您可以告诉我如何反向打印查询,即使这样也会有所帮助。但无论你如何帮助,请解释你的解决方案如何运作......我是初学者。

2 个答案:

答案 0 :(得分:10)

你的第一个问题是,你正试图通过"在表中没有的列" sub"。您需要在别名中返回它:

SELECT * FROM (SELECT msg,sender, timeofmsg  FROM chatlogs WHERE user1='userone' AND user2='usertwo' ORDER BY timeofmsg DESC LIMIT 30) sub ORDER BY sub.timeofmsg ASC

答案 1 :(得分:-2)

查询错误,您无法使用您提到的查询。