SQL联表查询LEFT JOIN 数据去重复

使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。

SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid

解决方法:

将查询结果作为中间表,使用group by 进行去重

SELECT tmp.* FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp group by tmp.id

如果想对group by后的数据计算count,可以将查询结果作为中间表再计算count

SELECT COUNT(1) FROM (
SELECT tmp.* FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp group by tmp.id
) tmp2

你可能感兴趣的:(SQL,sql,数据库)