Mysql 在SQL结果中有条件地设置列值
我正在基于多个表的联接创建一个结果集。为了简单起见,我附上了一张显示我的理论布局的图片: 我的结果集通常如下所示:Mysql 在SQL结果中有条件地设置列值,mysql,Mysql,我正在基于多个表的联接创建一个结果集。为了简单起见,我附上了一张显示我的理论布局的图片: 我的结果集通常如下所示: table1.value, table2.value, table3.value 但是,如果设置了table3.table4_键,我希望结果集改为,为: table1.value, table2.value, table4.value 如有任何建议,将不胜感激。我试图完全用SQL来组织我的所有数据,避免用PHP来破坏任何过程数据 解决方案SQL,如下所示: select ta
table1.value, table2.value, table3.value
但是,如果设置了table3.table4_键,我希望结果集改为,为:
table1.value, table2.value, table4.value
如有任何建议,将不胜感激。我试图完全用SQL来组织我的所有数据,避免用PHP来破坏任何过程数据
解决方案SQL,如下所示:
select
table1.value,
table2.value,
COALESCE(table4.value, table3.value)
from table1 join table2 on
table2.key = table1.key join table3 on
table3.key = table2.key left join table4 on
table4.key = table3.table4_key
假设您
LEFT JOIN
table4 on table3.table4\u键,您可以使用它来实现所需的结果
SELECT table1.value, table2.value, COALESCE(table4.value, table3.value)
“返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。”假设您可以使用
左连接表3上的表4。表4_键来实现所需的结果
SELECT table1.value, table2.value, COALESCE(table4.value, table3.value)
返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL