Мне удалось выполнить этот запрос с помощью оператора UNION ALL
для добавления отфильтрованных строк от table2
к table1
, и я использовал оператор NOT IN
для фильтрации строк из table2
.
SELECT
*
FROM
table1
UNION ALL (
SELECT table2.*
FROM
table2
WHERE
table2.email NOT IN (SELECT email FROM table1)
OR table2.productname NOT IN (SELECT productname FROM table1)
)
Кроме того, я сделал следующий исполняемый запрос на основе данных вашего примера, чтобы больше людей могло поиграть:
WITH table1 AS (
SELECT
"abc@abc.com" AS email,
"abc.com" AS website,
"msoffice" AS productname,
"abc" AS source,
"one" AS detail,
"12-Dec-19" AS leaddat
UNION ALL SELECT "pqr1@pqr1.com","pqr1.com","chrome","pqr1","two","12-Dec-19"
UNION ALL SELECT "xyz@xyz.com","xyz.com","iphone","xyz",NULL,"12-Dec-19"
UNION ALL SELECT "zzz@zzz.com","zzz.com","macbook","zzz","three","12-Dec-19"
UNION ALL SELECT "xyz1@xyz.com","xyz1.com","itunes","xyz1",NULL,"12-Jan-20"
UNION ALL SELECT "google@google.com",NULL,"googlecloud","xyz2",NULL,"12-Jan-20"
UNION ALL SELECT "123@123.com","123.com","yahoomail","123","xyz","12-Jan-20"
), table2 as (
SELECT
NULL AS email,
"abc.com" AS website,
"msoffice" AS productname,
"abc" AS source,
"one" AS detail,
"11-Nov-19" AS leaddat
UNION ALL SELECT "pqr@pqr.com","pqr.com","playstore","pqr1","two","12-Jan-20"
UNION ALL SELECT "123@123.com","123.com",NULL,"123","xyz","12-Oct-19"
UNION ALL SELECT "abc1@abc1.com","abc1.com",NULL,"xyz",NULL,"12-Jan-20"
UNION ALL SELECT "itunes@apple.com",NULL,"ipod","zzz","three","12-Jan-20"
UNION ALL SELECT NULL,NULL,"googlecloud","xyz2",NULL,"12-Jan-20"
UNION ALL SELECT "yahoo@yahoo.com",NULL,"yahoomail",NULL,NULL,"12-Jan-20"
)
SELECT
*
FROM
table1
UNION ALL (
SELECT table2.*
FROM
table2
WHERE
table2.email NOT IN (SELECT email FROM table1)
OR table2.productname NOT IN (SELECT productname FROM table1)
)
Надеюсь, это поможет.