问题引入
主表 m(id 主键) 去 join 两张子表 c1、c2。
因笛卡尔集的原因,可能导致 m 表的一条记录在查询结果集中会出现多次;而我只需要 select m 表的字段即可,因此用 distinct 去除重复的行。
使用 distinct 的同时,还需要 order by 排序,恰好排序的字段没有在 select distinct 中,因此可能会报错(以下的 SQL)。
可能会报错:查阅资料后了解到,order by 字段不在 select distinct 中,有些数据库是可以执行的。
select distinct m.id, m.name
from m
left join c1 on m.id = c1.m_id
left join c2 on m.id = c2.m_id
where
...过滤条件..