Вы можете получить набор результатов, какие флаги несуществующих данные во второй таблице в виде
ID flag_ID NAME flag_Name
1 ! A ! -- No Id=1, no NAME ='A' exists in the second table
3 NULL NULL ! -- Id=3 exists, no NAME is NULL exists
4 NULL Y NULL -- Both values exist but never in the same row
и приступайте к критериям, которые вам нужны.
Предполагая, что ID не NULL, NAME обнуляемым, значения NULL следует рассматривать как «равный»:
SELECT b.ID,
CASE WHEN NOT EXISTS (SELECT 1 FROM a t2 WHERE t2.ID=b.ID) THEN '!' END flag_ID,
b.NAME,
CASE WHEN NOT EXISTS (SELECT 1 FROM a t2
WHERE ISNULL(NULLIF(b.NAME, t2.NAME), NULLIF(t2.NAME, b.NAME)) IS NULL)
THEN '!' END flag_Name
FROM b
LEFT JOIN a ON a.ID = b.ID
AND ISNULL(NULLIF(a.NAME, b.NAME), NULLIF(b.NAME, a.NAME)) IS NULL
WHERE a.ID IS NULL
OR ISNULL(NULLIF(a.NAME, b.NAME), NULLIF(b.NAME, a.NAME)) IS NOT NULL
вы можете предоставить некоторые выборочные данные и желаемый результат, как я не в полной мере понять, что вы спрашиваете? – Tanner
Возможно, посмотрите [этот ответ] (http://stackoverflow.com/a/2077929/5809511). –
Являются ли ИДЫ, ИМЯ NULL? – Serg