0
点赞
收藏
分享

微信扫一扫

MySQL索引优化实战一

Alex富贵 2023-12-03 阅读 44
sql数据库

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

1、解决方法一

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

      第一种方法我们发现还是有重复数据 

2、解决方法二

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

3、解决方法三

SELECT distinct tmp.id, tmp.name FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp

4、其他补充

   我们需要查询重复的行的总行数,可以进行如下操作:

SELECT tmp.id, count(tmp.name) as count FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp group by tmp.id order by id asc

举报

相关推荐

0 条评论