我是 SQL 的新手,所以我会尽量让我尝试做的事情保持简单。
我有一个系统,我希望从中选择消息,首先从最近的开始,选择最多 5 条数据,然后将它们与最新的“时间”列最后排序才能正常显示。
这是我使用的语法:
SELECT * FROM messages WHERE sender = '$uid' AND reciever = '$new_user_id'
OR reciever = '$uid' AND sender = '$new_user_id' ORDER BY id ASC
FROM (SELECT * FROM messages ORDER BY time DESC)
这是我遇到的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (SELECT * FROM messages ORDER BY time DESC)' at line 1
我知道我在这里遇到了一些问题,但由于 SQL 不是我真正擅长的,所以我不知道该转向哪里。
一点点帮助就可以成就伟大的事业,我已经用头撞墙好几个小时了。
谢谢。
最佳答案
试试这个:
SELECT *
FROM (SELECT * FROM messages ORDER BY time DESC LIMIT 5)
WHERE ( sender = '$uid'
AND reciever = '$new_user_id' )
OR ( reciever = '$uid'
AND sender = '$new_user_id' )
ORDER BY time ASC;
编辑 编辑为在最后插入的 5 个项目中使用升序时间值进行排序。
关于php - MySQL - 子查询 - 你的 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981602/