簡體   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