MySQL - SubQuery - SQL语法错误

时间:2012-04-02 18:17:21

标签: php mysql sql

我对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不是我的事,我不知道该转向何处。

一点帮助都会有很大的原因,我一直在墙上撞了好几个小时。

感谢。

3 个答案:

答案 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