У меня есть таблицы с описанием:
old_data
|электронная почта |тип |
///////////////////////////////
клиенты
|email1 |
//////////////////////////////
корзины
|email |
Мне нужно найти записи, которых нет в таблице clients
, но все еще существует в таблице old_data
, где они имеют тип = 'Счета'.Поэтому я написал этот код:
SELECT `email` FROM `old_data`
WHERE `type` = 'Accounts' AND `email` NOT IN (SELECT `email1` FROM `clients`))
Затем мне нужно найти в этом результате записи, которых нет в таблице trashes
.Поэтому я написал этот код:
SELECT * FROM (SELECT `email` FROM `old_data`
WHERE `type` = 'Accounts' AND `email` NOT IN (SELECT `email1` FROM `clients`)) AS t1
WHERE t1.email NOT IN (SELECT `email` FROM `trashes`)
Проблема здесь в том, что у меня есть несколько записей в таблице old_data
для одного электронного письма и введите «Счета».То же самое в таблице trashes
, но не в таблице clients
.Мне нужно написать запрос вроде:
Получить все записи из old_data
, где нет clients
электронной почты, но если clients
email1 соответствует old_data
электронной почте, удалите все записи с этими электронными письмами из результата.Но затем, если из этого результата сопоставляется электронное письмо с электронным письмом из таблицы trashes
, удалите из результата только одну запись с этим электронным письмом.
Пожалуйста, помогите, я потерялся ...