我正在尝试检查各种表中是否存在数据。我有一个主表 A,以及具有与 A 相关的数据的各种表 - 称它们为表 B、C 和 D。我想编写一个查询,对于 A 中的每个条目,指示是否有任何行在 B、C 和 D 中的每一个中。
对此的第一次尝试如下:
SELECT A.id, count(B.id) as b_count, count(C.id) as c_count, count(d.id) as d_count
FROM A
LEFT JOIN B ON B.a_id = A.id
LEFT JOIN C ON C.a_id = A.id
LEFT JOIN D ON D.a_id = A.id
GROUP BY A.id
这给了我正确的结果 - 每个子表中的行数,在主表中按 id 列出。然而,这个查询也非常低效,因为它涉及多个连接,而且我并不关心每个子表中有多少行,只关心是否有任何行。
有人可以提出更好的选择吗?