这种情况就是,数据表一对多的时候!
假设有一个表t1,里面的数据如下第一张图,不需要知道字段的含义,还有一个表words,里面的数据如第二张图,他们之间的关系是一对多,t1.id=words.t1_id。我想要按t1里面的id取一条,两个表不能颠倒


select distinct t1.id,t1.a,w.word,w.t1_id from t1
left join words w ON w.t1_id = t1.id
where w.t1_id > 0;
结果如下图,这个结果不是我想要的,我只想要以t1中的id去distinct一条,这个时候distinct就失效了,group by 能够达到这样的效果

来,看一下group by,这个就是我想实现的效果,我以为的是distinct会只对第一个字段起效果,看来不是的。

有人说,你特么直接用group by就好了,当这两个表数据很大时,用group by非常耗时,不能使用。怎么办?
什么情况下distinct会有作用,看看下面的图,只查t1表!

至今不知道具体原因,不知道怎么办?有哪位大佬路过指点一二,不胜感激!
本文探讨了一对多关系中使用SQL查询时distinct与group by的区别及应用场景。通过具体的表结构和查询语句,展示了在大数据量下如何优化查询效率。
1382

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



