有条款不起作用

时间:2015-04-30 19:35:04

标签: sql group-by having

我是SQL的初学者,我目前正在尝试使用HAVING CLAUSE,但它不起作用..

我有两张桌子:

  1. tchat: tchat table

  2. tchat_message:

  3. tchat_message table

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

    首先:我加入了表:`

    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`
    

    在这里我有一个错误,上面写着:

      

    'having clause'

    中的未知列'date_message'

    有人有想法吗?

1 个答案:

答案 0 :(得分:2)

您错误地使用了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表(如果您在该表的select中有其他列,我就将其保留下来。)