所以我有两个sqlite3表
表1
ID Color Value
1 red 5
2 green 3
3 yellow 5
4 blue 1
5 white 4
表2
ID Color Value
2 green 6
3 yellow 2
5 white 3
如果可能,我想用一个选项做什么:
ID Color Value
1 red 5
2 green 6
3 yellow 2
4 blue 1
5 white 3
因此,除非表2中存在记录,否则请使用表1中的记录。如果表2中存在记录则使用该记录。
我看了工会但没有运气。我添加了第4列,其中包含1或0,其中1是表2数据,并尝试按照/限制1的顺序对表2进行优先排序,但这也不起作用。
我希望有一个select会自动执行,而不必为select提供where子句和要排除的项目,这样我就不得不对字符串查询进行连接。
这可能吗?
答案 0 :(得分:2)
select t1.ID, case when t2.Color is not null
then t2.Color
else t1.Color
end as Color,
case when t2.Value is not null
then t2.Value
else t1.Value
end as Value
from table1 t1
left outer join table2 t2 on t1.id = t2.id
更短的版本(感谢Doug)是:
select t1.ID,
coalesce(t2.Color, t1.Color) as Color,
coalesce(t2.Value, t1.Value) as Value
from table1 t1
left outer join table2 t2 on t1.id = t2.id