2016-05-02 65 views
0

我有一個消息表,其中包含所有消息。我想通過電話號碼進行查詢和分組,並將電話號碼與我的員工表匹配,並返回該電話號碼的最新消息/時間。多查詢Mysql

我現在使用的查詢給我找到的第一條消息,而不是最新的消息。其他的一切都是完美的。

EMPLOYEE表

id,firstname,lastname,phonenumber,crew 

信息表

id,type,phonenumber,message,status,date 

查詢我現在使用

select V.firstname,V.lastname,U.phonenumber,U.message,U.read, 
    max(U.date) as last_date 
from messages as U left join employees as V 
    on V.phonenumber = U.phonenumber 
group by U.phonenumber 
order by last_date desc 

回答

0

爲使您可以使用查詢每個電話號碼的最後一條消息的日期像這樣:

select phonenumber, max(date) as max_date 
from messages 
group by phonenumber 

讓每部手機號碼的最後一個消息,那麼你必須加入之前的查詢回來的信息表:

select m.* 
from 
    messages m inner join (
    select phonenumber, max(date) as max_date 
    from messages 
    group by phonenumber 
) lm on m.phonenumber = lm.phonenumber and m.date=lm.max_date 

那麼你可以與員工表連接:

... inner join employees as v 
    on m.phonenumber = v.phonenumber 
+0

我很好與基本查詢。但是這對我來說有點太混亂了。通過一些調整,我得到了你的代碼工作。謝謝 – Brandon

0

您可以使用組子查詢由

select V.firstname,V.lastname,U.phonenumber,U.message,U.read, U.date 
from messages as U left join employees as V 
on V.phonenumber = U.phonenumber 
where (U.date, U.phonenumber) in (select phonenumber, max(date) 
      from messages group by phonenumber) 
order by U.date desc