2

我看到了一个相关问题的答案,但无法真正将他们正在做的事情应用到我的具体案例中。

我有一个大表(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

有没有更好和/或更有效的方法来做到这一点?

谢谢!

4

1 回答 1

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
于 2014-03-27T08:22:00.750 回答