php - 线程消息系统的查询不起作用(基于其他成员的帖子)

标签 php mysql database

我一直在读这篇文章Creating a threaded private messaging system like facebook and gmail

它很好地解释了一切,但查询对我不起作用。我在第 1 行收到错误,其中显示“top 1”。 :(

以下是我想要达到的场景:

  1. 有 5 个人正在与 member1 交谈。成员 1 和其他 5 名成员有线程,因此总共有 5 个线程,因为有 5 个对话。我需要从 5 个线程中获取最新回复以及留下最后回复的人的用户名。

  2. 打开消息后,显示回复。

我猜我正在阅读的这篇文章是高效的,并且可以很好地处理成千上万的线程/回复。如果速度很慢,请告诉我是否有人可以向我指出一篇正确执行此操作的文章。我不太擅长MYSQL,还在学习中。

我正在使用此表设置

enter image description here

最佳答案

TOP是 Transact-SQL 语法,例如适用于 MS SQL Server 和 Sybase。 MySQL 中的等效语法是 LIMIT (位于 SELECT 命令的末尾):

select
  M.message_id
, M.sent_datetime
, M.title
, M.message_text
, S.user_id
, S.user_name
-- and anything else you want...
from MESSAGE M inner join USER S
  on M.sender_user_id = U.user_id
where M.reply_to_message_id = @ThreadRootMessageID
order by
  M.sent_datetime desc
limit 1

关于php - 线程消息系统的查询不起作用(基于其他成员的帖子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376574/

相关文章:

PHP:如何自动包含和实例化类?

php - MySQL中的部分关键字搜索

javascript - php 数组(数组)到 javascript

database - 存储 cms_block 和类别之间关系的 magento 表

mysql - SQL:ERD 图 - 数据冗余。

php - 在php中比较两个数组

php - 使用 1 个查询从 mysql 表中选择一个值

mysql - 如何在 ON DUPLICATE KEY UPDATE 的 INSERT 查询中使用 WHERE 子句?

MYSQL统计每类item的颜色数

mysql - 导入 50GB mysql 转储文件