Mysql 选择是否联接一个表或联接其他表
有三张桌子。我们把它们叫做a、b和c。根据表a中一个单元格的值,从表a中选择的数据必须与b或c相交。我们把这个细胞叫做d。MySQL中是否有方法进行如下查询:Mysql 选择是否联接一个表或联接其他表,mysql,Mysql,有三张桌子。我们把它们叫做a、b和c。根据表a中一个单元格的值,从表a中选择的数据必须与b或c相交。我们把这个细胞叫做d。MySQL中是否有方法进行如下查询: SELECT a.cell, a.other_cell, a.d, alias.cell, alias.other_cell if( a.d = 3, left join b as alias on b.id = a.id, left join c as alias on c.id = a.id
SELECT
a.cell,
a.other_cell,
a.d,
alias.cell,
alias.other_cell if(
a.d = 3,
left join b as alias on b.id = a.id,
left join c as alias on c.id = a.id
)
FROM
a where a.id = 123
例如,您可以尝试使用合并
,但在
简言之:
相反,您只需将外部联接保留到两个表,并在SELECT子句中从匹配的表返回数据
select
E.EmployeeName,
CASE
WHEN d = 3 THEN s.store
WHEN d <>3 THEN o.office
END as Location
from
Employees E
left outer join
Stores S on …
left outer join
Offices O on …
选择
E.雇员姓名,
案例
当d=3时,则s存储
当d 3时,然后是o办公室
结束位置
从…起
雇员
左外连接
在…
左外连接
在…上的办公室…
注意:我认为这两个列必须具有相同的类型,至少在
PG
中是这样,如果您希望根据
表a
那么像这样的工作可能适合你
SELECT
a.cell,
a.other_cell,
a.d,
if(a.d = 3, b.cell, c.cell) cell
FROM a
INNER JOIN b on b.id = a.id
INNER JOIN c on c.id = a.id
WHERE a.id = 123
这应该将b
和c
中提供的id与表a
中的id匹配的所有3个表连接起来。if
功能将根据表a
中的d
列的值,从表b
或c
中选择单元格
列
还有帮助: