使用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
当使用LEFTJOIN在table1和table2间联表查询时,如果table1的记录在table2中有多个匹配,会导致相同id的记录重复。通过将查询结果作为中间表,并应用GROUPBYtmp.id进行去重,可以消除重复。若需计算每个分组的数量,可进一步对去重后的中间表进行COUNT(1)操作。
1万+

被折叠的 条评论
为什么被折叠?



