php - MySQL - 子查询 - 你的 SQL 语法错误

标签 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)

这是我遇到的错误:

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/

相关文章:

python - MAC | Python 脚本运行良好,在终端插入 Mysql 表但无法作为 Cron 作业运行 |苹果

java - 插入时间并计算差异的最佳mysql语句

mysql - 从所有时间获取事件行的峰值

mysql - 合并查询结果,优化?

php - jQuery : Load body of page into variable

php - 在 woocommerce 中设置自定义订单状态

javascript - 登录后查看 HTML 内容

javascript - 数据表columndef渲染没有被命中并且没有错误

sql - 如何确定行在SQL结果集中的位置?

sql - PostgreSQL CHECK 约束外键以外的列