Distinct Join 以查找不匹配的数据 - Teradata
Distinct Join to find data that does NOT match - Teradata
真的为此苦苦挣扎...我编写了以下似乎有效的代码,并标识了与 FrontDoorColour 为红色的位置匹配的 40,000 个地址的行 ID。
SELECT DISTINCT ID
FROM Database.table1
WHERE table1.address = table2.address
AND table1.FrontDoorColour = 'RED'
我遇到的问题是,当我想反转它并识别 FrontDoorColour 为红色但地址不匹配的 10,000 个地址时。
我运行相同的查询但交换
WHERE table1.address = table2.address
为
WHERE table1.address <> table2.addres
我没有生成 10,000 个不匹配的行,而是得到一个假脱机 space 错误 (2646)
如有任何建议,我们将不胜感激!
谢谢
第二个查询的 EXPLAIN
输出应该产生 PRODUCT JOIN
,这可能是您收到假脱机错误的原因。第一个查询也可能会产生一个产品连接,但它可能会在您的假脱机分配范围内进行处理。以下 SQL 应该可以帮助您从表 1 中找到地址 ID,其中地址在表 2 中找不到,而表 1 中的门是红色的地址 ID。
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';
真的为此苦苦挣扎...我编写了以下似乎有效的代码,并标识了与 FrontDoorColour 为红色的位置匹配的 40,000 个地址的行 ID。
SELECT DISTINCT ID
FROM Database.table1
WHERE table1.address = table2.address
AND table1.FrontDoorColour = 'RED'
我遇到的问题是,当我想反转它并识别 FrontDoorColour 为红色但地址不匹配的 10,000 个地址时。
我运行相同的查询但交换
WHERE table1.address = table2.address
为
WHERE table1.address <> table2.addres
我没有生成 10,000 个不匹配的行,而是得到一个假脱机 space 错误 (2646)
如有任何建议,我们将不胜感激! 谢谢
第二个查询的 EXPLAIN
输出应该产生 PRODUCT JOIN
,这可能是您收到假脱机错误的原因。第一个查询也可能会产生一个产品连接,但它可能会在您的假脱机分配范围内进行处理。以下 SQL 应该可以帮助您从表 1 中找到地址 ID,其中地址在表 2 中找不到,而表 1 中的门是红色的地址 ID。
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';