有条款不起作用

Having clause does not work

我是 SQL 的新手,我目前正在尝试使用 HAVING 子句,但它不起作用..

我有两个表:

  1. 聊天:

  2. tchat_message :

所以我想要来自用户的最新消息。

首先: 我加入表格:`

select user_id, user_message, max(date_message) 
from tchat 
inner join tchat_message on tchat.id=tchat_message.user_id

这里没问题

其次: 我使用了 having 子句:

select user_id, user_message, max(date_message) 
from tchat 
inner join tchat_message on tchat.id=tchat_message.user_id 
group by user_id 
having max(date_message) = date_message`

这里我有一个错误:

Unknown column 'date_message' in 'having clause'

有人知道吗?

您错误地使用了 having 子句。以下更接近您的要求:

select tm.user_id, tm.user_message, tm.date_message
from tchat t inner join
     tchat_message tm
     on t.id = tm.user_id inner join
     (select user_id, max(date_message) as maxdm
      from tchat_message
      group by user_id
     ) tmm
     on tmm.user_id = tm.user_id and tmm.maxdm = tm.date_message;

您不需要在外部查询中使用 group by。您似乎也不需要 tchat table(我把它留了下来,以防您在 table 中的 select 中有其他列)。