SQLite3, изберете от две таблици една с приоритет?

Така че имам две 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 и се опитах да дам приоритет за таблица две с подреждане по/лимит 1, но това също не проработи.

Надявам се на един select, който просто ще го направи автоматично, без да трябва да предоставям select с клауза where и елементи за изключване, така че да трябва да свържа заявка за низ.

Възможно ли е това?


person user1493273    schedule 29.07.2012    source източник


Отговори (1)


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

редактиране

Още по-кратка версия (благодарение на Дъг) е:

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
person juergen d    schedule 29.07.2012
comment
Решението ви изглежда добре, но можете да замените операторите за случай с coalesce(t2.Color, t1.Color) as Color, coalesce(t2.Value, t1.Value) as Value - person Doug Currie; 30.07.2012