我正在尝试建立一个用于学习目的的聊天网站,因此在此过程中,我希望最后30条消息按升序显示w.r.t.时间。比如,最底层的最新消息,最顶层的消息。经过大量的谷歌搜索,但找不到任何可以帮助的解决方案,我不得不问这个。
它以降序返回我想要的数据。也就是说,顶部是最新的。即使我将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的错误。那么我该如何解决这个问题呢?
如果您可以告诉我如何反向打印查询,即使这样也会有所帮助。但无论你如何帮助,请解释你的解决方案如何运作......我是初学者。
答案 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)
查询错误,您无法使用您提到的查询。