как вычесть sql таблиц (но оставить «ноль») - PullRequest
0 голосов
/ 27 февраля 2020

есть таблица, где я запускаю две команды с этим:

SELECT DISTINCT(DésignationBDC2) FROM pdc where BDC3 like '%01|06|02%'
SELECT DISTINCT(DésignationBDC2) FROM pdc where Id=60

, тогда я получаю это:

DésignationBDC2
018 Rose
047 Noir
507 Poudre
545 Rouge
556 Navy
F72 Caramel
280 Saphir

и это

DésignationBDC2
047 Noir
545 Rouge
556 Navy
F72 Caramel

i ' Я хотел бы вычесть эти таблицы, чтобы получить это:

DésignationBDC2
null
047 Noir
null
545 Rouge
556 Navy
F72 Caramel
null

Как я могу это сделать? спасибо

Ответы [ 3 ]

0 голосов
/ 27 февраля 2020

Рекомендую агрегацию:

select (case when id = 60 then null else DésignationBDC2 end)
from pdc
where DésignationBDC2 like '%01|06|02%'
group by DésignationBDC2;
0 голосов
/ 27 февраля 2020

, используя предложенный вами метод, я попытался объединить эти две таблицы следующим образом:

select 
    T2.* 
from 
    (SELECT DISTINCT DésignationBDC2 FROM pdc2 where BDC3 like '%01|06|02%') AS T1
    LEFT JOIN (select DésignationBDC2, COULEUR from pdc2 where Id=60) AS T2 ON T1.DésignationBDC2 = T2.DésignationBDC2

эти таблицы: 1 и 2

однако, я получаю это: 3 и, как вы можете видеть, порядок "DésignationBDC2" теряется из первой таблицы. Как я могу избежать этого?

0 голосов
/ 27 февраля 2020

Вы можете достичь этого, используя левое соединение

select 
    T2.* 
from 
    (SELECT DISTINCT DesignationBDC2 FROM pdc where BDC3 like '%01|06|02%') AS T1
    LEFT JOIN (SELECT DISTINCT DesignationBDC2 FROM pdc where Id=60) AS T2 ON T1.DesignationBDC2 = T2.DesignationBDC2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...