我对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)
这是我得到的错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行'FROM(SELECT * FROM messages ORDER BY time DESC)'附近
我知道我在这里遇到了一些问题,但由于SQL不是我的事,我不知道该转向何处。
一点帮助都会有很大的原因,我一直在墙上撞了好几个小时。
感谢。
答案 0 :(得分:2)
试试这个:
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个项目中使用升序时间值编辑到度假胜地。
答案 1 :(得分:0)
看起来不需要子查询。取消子查询并在ORDER BY时间DESC LIMIT 5上进行操作。
答案 2 :(得分:0)
SELECT * FROM (
SELECT *
FROM messages
WHERE
(sender = '$uid' AND reciever = '$new_user_id')
OR (reciever = '$uid' AND sender = '$new_user_id')
ORDER BY time asc
LIMIT 5) AS a ORDER by a.time DESC