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
关于MYSQL:如果存在,则从表B中选择列,否则从表A中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957769/