2016-04-22 6 views
0

действительно борется с этим ... Я написал следующий код, который работает, и идентифицирует идентификатор строки 40 000 адресов, которые соответствуют тому, где FrontDoorColour является КРАСНЫМ.Distinct Join, чтобы найти данные, которые НЕ совпадают - Teradata

SELECT DISTINCT ID 
FROM Database.table1 
WHERE table1.address = table2.address 
AND table1.FrontDoorColour = 'RED' 

У меня есть проблема, когда я хочу, чтобы изменить это и определить, 10000 адресов, где FrontDoorColour КРАСНЫЙ, но где адрес не совпадает.

я бегу тот же запрос, но поменять

WHERE table1.address = table2.address

для

WHERE table1.address <> table2.addres

Вместо того чтобы генерировать 10000 несовпадающих строк, я получаю ошибку золотник пространства (2646)

Любые предложения были бы высоко оценены! Спасибо

ответ

0

EXPLAIN вывод второго запроса должен давать PRODUCT JOIN и, вероятно, является причиной возникновения ошибки катушки. Первый запрос также может привести к соединению продукта, но он может обрабатываться в пределах вашего распределения очереди. Следующий SQL должен помочь вам найти идентификаторы адресов из Таблицы 1, где адрес не найден в Таблице 2, а дверь в Таблице 1 КРАСНА для идентификатора адреса.

SELECT DISTINCT t1.id 
    FROM Database.Table1 t1 
WHERE NOT EXISTS (SELECT 1 
        FROM Database.Table2 t2 
        WHERE t1.address = t2.address) 
    AND t1.FrontDoorColour = 'RED'; 
+0

Большое вам спасибо, что работает отлично! Теперь мне просто нужно надеяться, что никто не перекрасит их входную дверь; o) – Surfing