MySQL 默认情况下的条件左连接
MySQL Conditional Left Join With Default
有没有办法创建条件 left join
,如果找不到匹配项,它将 left join
默认值?
我有一个client
table和一个preference
table。在 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
有没有办法创建条件 left join
,如果找不到匹配项,它将 left join
默认值?
我有一个client
table和一个preference
table。在 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