繁体   English   中英

MYSQL:从表B中选择列(如果存在),否则从表A中选择

[英]MYSQL: Select column from table B if it exists, otherwise from table A

Table A
Name      Value
John      1
Mary      2
Gary      3

Table B
Name      Value
Jim       10
Jason     20
Mary      30

我想要表A的名称和值,但是如果表B中存在,则覆盖值。因此,我的预期输出将是:

John,1
Mary,30
Gary,3

我正在尝试类似的东西:

SELECT A.Name, IF(EXISTS(B.Value),B.Value,A.Value) FROM Table A LEFT JOIN Table B on B.Name=A.Name

您可以为此使用Mysql COALESCE函数。 它将返回参数列表中的第一个非空参数:

因此,您的代码将类似于:

 SELECT A.Name, 
        coalesce(B.Value,A.Value) 
 FROM Table A LEFT JOIN Table B on B.Name=A.Name

因此,将发生的情况是,如果表B中有一个值,则将使用该值,否则将还原为A。

参见文档: http : //dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

尝试以下方法:

SELECT 
  A.Name,
  CASE WHEN b.Name IS NULL THEN a.Value ELSE b.value END AS value
FROM TableA  AS a
LEFT JOIN TableB AS b on B.Name=A.Name;

SQL小提琴演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM