[英]Select DISTINCT rows of multiple columns in mysql
我有一個名為sk_messages
的表。它的結構如下:
msg_id msg_from_user_id msg_to_user_id msg_text msg_date msg_status
1 12 14 hai... 23-12-2013 unread
2 12 14 .... ... unread
3 13 14 ... .. unread
我的要求是我想要顯示當前用戶的所有消息,條件是發送者應該顯示單個消息,即使他發送了多條狀態為未讀的消息。也就是說,從上面的上下文中,單個消息應該顯示ID為12的用戶。我嘗試了以下查詢,但它不起作用。
SELECT DISTINCT (msg_from_user_id), msg_text, msg_date
FROM sk_messages
WHERE msg_to_user_id = '$user_id'
AND msg_status = 'unread'
ORDER BY msg_date
$user_id is the id of the login user
嘗試按ID group
用戶。
SELECT msg_text, msg_date
FROM sk_messages
WHERE msg_to_user_id = '$user_id'
AND msg_status = 'unread'
GROUP BY msg_from_user_id
ORDER BY msg_date
測試代碼以獲取最新消息
'SELECT * FROM ( SELECT * FROM message WHERE user_id = 1 ORDER BY created DESC LIMIT 1) as msg GROUP BY user_id '
試試這個:
SELECT
m1.msg_from_user_id,
m1.msg_text,
m1.msg_date
FROM sk_messages AS m1
INNER JOIN
(
SELECT msg_from_user_id, MAX(msg_date) AS LatestDate
FROM sk_messages
WHERE msg_to_user_id = '$user_id'
AND msg_status = 'unread'
GROUP BY msg_from_user_id
) AS m2 ON m1.msg_from_user_id = m2.msg_from_user_id
AND m1.msg_date = m2.LatestDate
ORDER BY m1.msg_date;
用這個
SELECT msg_from_user_id,
msg_text, msg_date
FROM sk_messages
WHERE msg_to_user_id = '$user_id'
AND msg_status = 'unread'
ORDER BY msg_date GROUP BY msg_from_user_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.