如何從兩列的組合中選擇DISTINCT值?我創建一個線程的收件箱,很像iPhone短信系統,我想要做的線沿線的東西:在MySQL中的列X或Y中返回不同的值
SELECT DISTINCT (senderid or recipientid - whichever value != my $userid),
name, body FROM messages
WHERE $userid = (either senderid, recipientid - whatever is discovered first).
對不起,是如此混亂,但這個想法是返回最新消息(不管是否消息已發送或接收)在消息傳遞系統中創建不同的線程。兩個用戶之間只能有一個線程。
編輯:這是我現在正在使用
// Pull all the girls who are being followed by $userid
$sql = "SELECT * FROM messages
LEFT JOIN (
SELECT DISTINCT CASE WHEN '$userid' != senderid
THEN senderid ELSE recipients
END otherid, users.username AS sendername, messages.body, messages.time
FROM messages
WHERE messages.recipients = '$userid' OR messages.senderid = '$userid'
) subq ON users.id = subq.otherid
ORDER BY subq.time";
這看起來非常有前途,我從來沒有被教過關於案件的表達!我會給這個鏡頭 - 什麼是someid意味着代表? – Walker 2011-04-11 16:10:35
'someid'是您給出案例表達式結果的列名。我不確定你想要怎麼稱呼它,所以我用了一些通用的東西。 – FrustratedWithFormsDesigner 2011-04-11 16:11:53
嘿沮喪,最後一個問題:當我使用上面的case語句(這是完美的 - 謝謝!)如何基於someid做一個leftjoin?基本上我想這樣做:'左用戶加入users.id = someid' – Walker 2011-04-11 20:43:02