1

所以我有两个 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

所以使用表 1 中的记录,除非它存在于表 2 中。如果记录存在于表 2 中,则使用该记录。

我查看了工会,但没有运气。我添加了第四列,其中包含 1 或 0,1 是表 2 数据,并尝试使用 order by/limit 1 为表 2 设置优先级,但这也不起作用。

我希望有一个选择可以自动执行,而无需为选择提供 where 子句和要排除的项目,这样我就必须连接字符串查询。

这可能吗?

4

1 回答 1

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
于 2012-07-29T18:45:39.533 回答