240 MySQL中distinct去重失效的一种情况

这种情况就是,数据表一对多的时候!

假设有一个表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表!

至今不知道具体原因,不知道怎么办?有哪位大佬路过指点一二,不胜感激!

猜你喜欢

转载自blog.csdn.net/phpstory/article/details/109533499