2014-09-18 35 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对于没有用户。这样您仍然可以使用外键。