有没有办法制作条件left join
,如果找不到匹配项,left join
将会设为默认值?
我有一个client
表和一个preference
表。 preference
表中的记录0是我的全局默认首选项。在某些情况下,客户端可能会覆盖全局引用,在这种情况下,客户端将在preference
表中拥有自己的记录。
所以,我希望left join
上的偏好表client.ClientID = preference.ClientID
,但是如果没有匹配,那么我想改为加入preference.ClientID = 0
。
答案 0 :(得分:2)
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