我看到了相关question的答案,但无法将他们正在做的事情应用于我的具体案例。
我有一个大表(300k行),我需要有效地与另一个更大(1-2M行)的表连接。出于我的目的,我只需要知道第二个表中是否存在匹配的行。我提出了一个嵌套查询,如下所示:
SELECT
id,
CASE cnt WHEN 0 then 'NO_MATCH' else 'YES_MATCH' end as match_exists
FROM
(
SELECT
A.id as id, count(*) as cnt
FROM
A, B
WHERE
A.id = B.foreing_id
GROUP BY A.id
) AS id_and_matches_count
有更好和/或更有效的方法吗?
谢谢!
答案 0 :(得分:2)
你只想要一个左外连接:
SELECT
A.id as id, count(B.foreing_id) as cnt
FROM A
LEFT OUTER JOIN B ON
A.id = B.foreing_id
GROUP BY A.id