Возвращаемые значения из одной таблицы, которых нет в другой - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть две таблицы: одна:

INSERT INTO `fictional_companies` (`ID`, `name`)
VALUES
    (8209948, 'Moulon Rouge LTD'),
    (11399177, 'Burgers Burgers Burgers LTD');

и две:

INSERT INTO `processed` (`ID`)
VALUES
    ('8209948');

Я хочу вернуть результаты из таблицы fictional_companies, но только если они этого не делаютсуществует в таблице processed.

В нашем примере это будет результат:

(11399177, 'Burgers Burgers Burgers LTD')

Ответы [ 3 ]

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

LEFT JOIN на основе правильных отношений с проверкой IS NULL в правой таблице, получит те строки, которые не соответствуют таблице правой стороны

SELECT fc.*
FROM fictional_companies AS fc
LEFT JOIN processed AS p ON p.ID = fc.ID
WHERE p.ID IS NULL

Другой подходвозможно использование коррелированных подзапросов с несуществующими

SELECT fc.*
FROM fictional_companies AS fc
WHERE NOT EXISTS (SELECT 1 FROM processed AS p 
                  WHERE p.ID = fc.ID)
0 голосов
/ 18 ноября 2018

Использование NOT IN:

SELECT * FROM `fictional_companies` WHERE `ID` NOT IN (SELECT `ID` FROM `processed`)

Я считаю, что код легко понять.

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

используйте левое соединение и проверьте, где нулевые значения в правой таблице просто выбирают эти значения

select t1.* from fictional_companies  t1 
left join processed t2 
on t1.ID=t2.ID
where t2.id is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...