如果表2中存在MySQL,请从表1中选择所有数据,并通过ID从表2中选择替换值

时间:2019-10-26 14:07:07

标签: mysql sql

我必须对t1和t2进行统计:

t1:                 t2:
|ID | Value |       |ID | Value |
|---|-------|       |---|-------|
| 1 | AAA   |       | 1 | AAA   |
| 2 | BBB   |       | 2 | KKK   |
| 3 | CCC   |       | 3 | ZZZ   |
| 4 | DDD   |       | 9 | QQQ   |
| 5 | EEE   |       |---|-------|       
|---|-------|

As a relust i need to get T3 that looks like this:

|ID | Value |
|---|-------|
| 1 | AAA   |
| 2 | KKK   |
| 3 | ZZZ   |
| 4 | DDD   |
| 5 | EEE   |       
|---|-------| 

我是sql的新手,我能得到的最好的是:

SELECT
    new_TT.ID,
     (SELECT value FROM SCV WHERE ID=new_TT.id)  AS value

FROM 
    T new_TT

但它只会返回t1中的现有值。

另一种解决方案满足了我的需要,但只有少量数据才能满足我的需要,而我需要使用lagre。

解决方案分为两部分:

  1. 创建新表t3并复制t1中的所有数据

  2. 替换t3中的行,其中t3.id = t2.id

1 个答案:

答案 0 :(得分:1)

您可以将coalesce()函数与left join一起使用

create table t3 as
select t1.ID, coalesce(t2.value,t1.value) as value
  from t1
  left join t2 on t1.ID=t2.ID

Demo