【发布时间】:2018-06-27 15:35:27
【问题描述】:
我的 SQL 查询有问题。我想为用户显示最后一条消息。所以,我使用“GROUP BY”方法,但他没有显示最后一条消息。
这是我的第一个查询:
SELECT `messages`.*, `conversations`.*
FROM `messages` JOIN `conversations` ON `conversations`.`cNUM` = `messages`.`mCONV_NUM`
WHERE `cUSER2` = '2'
GROUP BY `messages`.`mCONV_NUMn`
我尝试关注这个主题:ORDER BY date and time BEFORE GROUP BY name in mysql(以及许多其他)
我有这个:
SELECT `messages`.*, `conversations`.*
FROM (SELECT mTIME
FROM `messages`
ORDER BY mTIME desc) AS M
JOIN `conversations` ON `conversations`.`cNUM` = `messages`.`mCONV_NUM`
WHERE `cUSER2` = '2'
GROUP BY `messages`.`mCONV_NUMn`
我有这个错误:Table 'messages' unknown.
所以..我需要你们的帮助
【问题讨论】:
-
在第二个查询中,你给消息一个别名 M,所以你应该把它称为 M 而不是消息。
-
无论如何,表中的行(包括派生表,即子查询)被认为是无序的。所以你的
ORDER BY毫无意义。你的 DBMS 是什么?这通常通过窗口函数或CROSS APPLY解决。从我认为这是 MySQL 的丑陋反引号来看? MySQL 不支持这两种方法。
标签: mysql sql sql-order-by