MySQL 默认情况下的条件左连接

MySQL Conditional Left Join With Default

有没有办法创建条件 left join,如果找不到匹配项,它将 left join 默认值?

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

所以,我希望在 client.ClientID = preference.ClientID 上执行偏好 table 的 left join,但是如果没有匹配项,那么我想离开加入 preference.ClientID = 0 相反。

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