Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在SQL结果中有条件地设置列值_Mysql - Fatal编程技术网

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