1

だから私は2つの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

可能であれば、1つの選択でやりたいことは次のとおりです。

ID Color Value
1 red    5
2 green  6
3 yellow 2
4 blue   1
5 white  3

したがって、テーブル 2 に存在しない限り、テーブル 1 のレコードを使用します。テーブル 2 にレコードが存在する場合は、代わりにそれを使用します。

私は組合を見ましたが、運がありませんでした。1 または 0 を含む 4 番目の列を追加しました。1 はテーブル 2 のデータであり、オーダー/リミット 1 でテーブル 2 の優先順位を付けようとしましたが、それもうまくいきませんでした。

文字列クエリを連結する必要があるように、select に where 句と除外する項目を指定する必要なく、自動的にそれを実行する 1 つの select を望んでいます。

これは可能ですか?

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 に答える