我有一個消息系統(非常基本的)做出1列的查詢有這樣一個表:如何通過從兩列選擇的mysql
**MESSAGE_ID** **RUSER_ID** **SUSER_ID** **MESSAGE_DATA** **DATE**
RUSER是接收用戶,而且的suser是發送用戶。如果我想輸出一個查詢,將輸出某個用戶的消息,我現在會做:
從PRIVATE_MESG選擇*其中RUSER_ID = $ USER_ID或SUSER_ID = $ USER_ID
這會給我所有MESSAGE_ID的與該USER_ID關聯。我想要的是創建一個列,該列只能生成與特定用戶關聯的RUSER_ID或SUSER_ID關聯的ID。我需要它來選擇RUSER_ID或SUSER_ID是等於USER_ID的消息,但只顯示一個不是USER_ID
然後,我會想通過查詢的輸出做一組。
任何幫助,非常感謝!
謝謝!
更新我並不是真的在尋找一個message_id,我只是在尋找那個人已經寫過或接收過的用戶列表。
UPDATE 大家都知道,我完全接受了這個問題的答案!後來我調整了它,以便它也按照從最新到最舊的日期顯示它們。我通過使用DATE()和TIME()函數將DATETIME拆分爲DATE和TIME來做到這一點。這是我的最終查詢:
SELECT
IF(RUSER_ID = $USER, SUSER_ID, RUSER_ID) as THE_OTHER_GUY, DATE(DATE) as DAY, TIME(DATE) as TIME
FROM PRIVATE_MESG
WHERE RUSER_ID = $USER
OR SUSER_ID = $USER;
group by THE_OTHER_GUY ORDER BY DAY DESC, TIME DESC
希望這有助於下一個人!
這確實有用!你知道哪一個會更有效率嗎?如果還是工會? – Linux4Hope
如果你在RUSER_ID和SUSER_ID上有索引,那麼聯合可能會更有效率,但如果你想計算其他一些列,它可能會變得非常冗長:) –
我是一名初學者程序員(18歲),所以我把術語Indexes鬆散地並非100%確定描述它們的最佳方式。這兩列會鏈接回另一個表(USER_ACCOUNTS)。這是否意味着它們是索引?此外,你的答案真的幫助我更多地瞭解mysql ...謝謝! – Linux4Hope