我很难让这个查询起作用。
我有2个包含国家/地区代码为'US'或'AU'或'JP'的表格 - 这是一个常用密钥。
SELECT DISTINCT cc FROM geo_world; SELECT cc FROM geo_country;
注意:geo_world是一个包含数百万个条目的大表,但只有124个不同的cc值。
注意:geo_country只包含244个cc值。
我想找出geo_country中未在geo_world中显示的cc值。应该有120个。
thankyou - 我尝试过加入但未能得到结果。
答案 0 :(得分:4)
原则上,任何这些都应该有效:
SELECT cc
FROM geo_country
WHERE cc NOT IN
( SELECT cc -- or SELECT DISTINCT cc
FROM geo_world
)
;
SELECT cc
FROM geo_country
WHERE NOT EXISTS
( SELECT 1
FROM geo_world
WHERE cc = geo_country.cc
)
;
SELECT geo_country.cc
FROM geo_country
LEFT
OUTER
JOIN geo_world
ON geo_world.cc = geo_country.cc
WHERE geo_world.cc IS NULL -- i.e., the join failed
;
但是你必须尝试看看哪一个表现最好。
答案 1 :(得分:0)
SELECT DISTINCT cc
FROM geo_world
WHERE cc NOT IN (SELECT cc FROM geo_country)
一些注意事项:
geo_world
的索引涵盖cc
答案 2 :(得分:0)
您可以使用NOT EXISTS条件。你可以这样做:
SELECT cc FROM geo_country WHERE
NOT EXISTS (SELECT * from geo_world WHERE geo_world.cc = geo_country.cc);