[英]Create a view based on two tables with value substitution
我在查詢中掙扎,我不確定該怎么做。
我想基於表original_data_table創建一個視圖my_view ,其中每當指定一個ID時,每個值都將由來自表replace_data_table的非空值替換 。
original_data_table和replacement_data_table都具有相同的結構,但具有不同的值。
我嘗試在查詢中使用JOIN,但不確定是否要這樣做。
SELECT * FROM original_data_table AS o
LEFT JOIN replacement_data_table AS r
ON o.id = r.id
original_data_table
id name value
1 David 10
2 John 20
3 Sarah 30
4 Amy 40
replace_data_table
id name value
1 NULL 50
2 Rick NULL
4 Emma 60
我的觀點
id name value
1 David 50
2 Rick 20
3 Sarah 30
4 Emma 60
您需要COALESCE()
從正確的表中獲得正確的值:
SELECT o.id,
COALESCE(r.name, o.name) as name,
COALESCE(r.value, o.value) as value
FROM original_data_table o LEFT JOIN
replacement_data_table r
ON o.id = r.id;
嘗試這個:
SELECT o.id as id, IFNULL(r.name, o.name) as new_name, IFNULL(r.value, o.value) as new_value
FROM original_data_table AS o
LEFT JOIN replacement_data_table AS r
ON o.id = r.id
嘗試使用case when
SELECT
o.`id`,case when o.`name` <> r.`name` and r.`name` is not null then
r.`name`
else o.`name`
end as name
,case when o.`value` <> r.`value` and r.`value` is not null then
r.`value`
else o.`value`
end as value
FROM original_data_table AS o
LEFT JOIN replacement_data_table AS r
ON o.id = r.id
order by o.id
| id | name | name |
|----|-------|------|
| 1 | David | 50 |
| 2 | Rick | 20 |
| 3 | Sarah | 30 |
| 4 | Emma | 60 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.