MySQL条件左连接默认

时间:2015-06-06 20:06:02

标签: mysql left-join conditional

有没有办法制作条件left join,如果找不到匹配项,left join将会设为默认值?

我有一个client表和一个preference表。 preference表中的记录0是我的全局默认首选项。在某些情况下,客户端可能会覆盖全局引用,在这种情况下,客户端将在preference表中拥有自己的记录。

所以,我希望left join上的偏好表client.ClientID = preference.ClientID,但是如果没有匹配,那么我想改为加入preference.ClientID = 0

1 个答案:

答案 0 :(得分:2)

SqlFiddle Demo

select * from client, preference
where preference.clientID in (select MAX(preference.ClientID)
                              from preference 
                              where preference.ClientID = client.ClientID OR preference.ClientID = 0)

select client.name, MAX(preference.ClientID)
from client
left join preference on preference.ClientID = client.ClientID OR preference.ClientID = 0
group by client.name