2014-09-18 41 views
-1
SELECT * FROM chat JOIN users ON chat.user_id = users.id 

在這裏,我選擇有用戶的聊天消息,我也想選擇其他沒有用戶的聊天消息(因此chat.user_id = 0),併爲值爲字段「登錄」值對於那些未加入的行,「guest」如何在程序中沒有任何額外的循環,只需一次執行mysql?Mysql如何爲未連接的行設置值?

+0

好吧,添加一個謂詞並改變'JOIN'類型。我極力鼓勵你回到SQL基礎知識。 – Kermit 2014-09-18 15:40:54

+0

@Kermit固定請檢查問題,這只是一個打字錯誤 – DoublePudge 2014-09-18 15:41:19

+0

對於初學者來說,這個查詢是完全無效的。 – mariobgr 2014-09-18 15:42:27

回答

2

喜歡的東西:

SELECT c.*, 
      COALESCE(u.login,'guest') login 
      /** other user fields **/ 
    FROM chat c 
LEFT JOIN users u 
     ON u.id = c.user_id 

我仍然但是登記的客人臨時用戶,這樣的消息可以被追蹤到至少對某些責任的會話。

如果不是,請使用NULL而不是0對於沒有用戶。這樣您仍然可以使用外鍵。