SQLite выберите значение из tbl2 (или tlb1, если не существует) - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть две таблицы tbl1 и tbl2 обе со строками id и price, где tbl1 содержит много записей и tbl2 только несколько

Я хочу выбрать всезаписи из tbl1, но хотите заменить price данными из tbl2, если они существуют в tbl2

До сих пор я получил этот запрос, который не работает:

SELECT p.id,
       CASE p.id WHEN p.id IN (
                SELECT id
                  FROM tbl2
            )
       THEN o.price
       ELSE p.price END AS 'price'
  FROM tbl1 p
       LEFT JOIN tbl2 o ON p.id = o.id

Образец tbl1

id  price
1   1.23
2   4.56
3   7.89

Образец tbl2

id  price
2   99.99

Ожидаемый результат запроса

id  price
1   1.23
2   99.99    <--- entry from tbl2
3   7.89   

1 Ответ

0 голосов
/ 23 ноября 2018

Просто используйте COALESCE, чтобы выбрать правильную цену:

SELECT
    p.id,
    COALESCE(o.price, p.price) price
FROM tbl1 p
LEFT JOIN tbl2 o
    ON p.id = o.id;

enter image description here

Демо

Логика здесь в том, что мы используем price из второй таблицы, предполагая, что он присутствует для данного id.Если он присутствует , а не , мы вернемся к использованию price из первой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...