Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 1250-表';子&x27;无法在全局顺序子句中使用来自其中一个SELECTs的_Php_Mysql_Sql - Fatal编程技术网

Php 1250-表';子&x27;无法在全局顺序子句中使用来自其中一个SELECTs的

Php 1250-表';子&x27;无法在全局顺序子句中使用来自其中一个SELECTs的,php,mysql,sql,Php,Mysql,Sql,我正试图建立一个聊天网站用于学习,所以在这个过程中,我希望最后30条消息按w.r.t.时间的升序出现。比如,最新的消息在底部,最旧的消息在顶部。经过大量的谷歌搜索,但没有找到解决办法,我不得不问这个问题 这是MySQL语句。 它以降序返回我想要的数据。也就是说,最新的在顶部。即使我将ASC更改为DESC,也不会发生任何事情 SELECT * FROM (SELECT msg,sender FROM chatlogs WHERE user1='userone' AND user2='usertwo

我正试图建立一个聊天网站用于学习,所以在这个过程中,我希望最后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子句
如果您能告诉我如何反向打印查询,即使这样也会有所帮助。但无论你如何帮助,请解释你的解决方案将如何工作。。。我是这方面的初学者。

您的第一个问题是,您试图对“sub”表中不存在的列执行“order by”。您需要在别名中返回它:

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

查询错误,您无法使用您提到的查询,因为这是不可能的。

所以我必须添加“timeofmsg”就行了?我以为它会在引用后从数据库中自己选择它…不,它不是自动的,你需要将它作为子表的一列返回。真不敢相信这花了我这么多时间。。。不过谢谢。:)