【发布时间】:2013-12-20 14:34:01
【问题描述】:
我正在使用这个查询
SELECT * FROM parent_table
LEFT JOIN child_tab ON parent_table.id = child_tab.parent_id
LEFT JOIN child_tab2 ON parent_table.id = child_tab2.parent_id
如果我像这样添加这个条件:
WHERE child_tab2.parent_id IS NOT NULL
OR child_tab.parent_id IS NOT NULL;
之后,孤立行将被删除。如果连接条件超过两个三个表就可以了
但我不希望在WHERE 子句中实现这种类型,因为我的连接条件是动态的,并且没有子表是可变的。(最多可能是 1 到 20)
【问题讨论】:
-
Afaik 你在 where 子句中需要一些东西。使用 where 子句到底有什么问题?覆盖所有表格的单一条件是否可行?
-
你能用一个例子来做一个小提琴吗?
-
为什么可变数量的子表会成为问题?
-
这个
WHERE COALESCE(child_tab.parent_id, child_tab2.parent_id) IS NOT NULL更短。请注意,COALESCE 至少需要 2 个参数。