欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

sql,去重查询distinct

程序员文章站 2022-05-12 15:54:55
...
select DISTINCT `object_id`, t3.width as width, t3.height as height,t3.ismark as ismark, t2.rtime as add_time,t1.add_author as add_author,t1.image_url as image_url,t1.id as id,t1.browse_real_cnt as browse_real_cnt from comments as t2 left join ornamentations as t1 on t1.id = t2.object_id left join ornamentation_images as t3 on t3.ornamentation_id = t1.id where ( t2.uid = 1013 ) AND ( t1.enable = '0' ) ORDER BY t2.id desc LIMIT 0,5 

select后面的条件,带t3正常,能去重复的,加了t2,t1就没法去重复的了


回复讨论(解决方案)

DISTINCT 作用于整行
你的3个表中只要存在一对多的情况就难说了

DISTINCT 作用于整行
你的3个表中只要存在一对多的情况就难说了


那该怎么写呢?我刚才也查了,一个表用distinct,多个表的时候就不用它了,我没看懂别人的说法

再套一个 select

select DISTINCT * from   (`object_id`, t3.width as width, t3.height as height,t3.ismark as ismark, t2.rtime as     add_time,t1.add_author as add_author,t1.image_url as image_url,t1.id as id,t1.browse_real_cnt as   browse_real_cnt   from comments as t2   left join ornamentations as t1 on t1.id = t2.object_id   left join ornamentation_images as t3 on t3.ornamentation_id = t1.id   where ( t2.uid = 1013 ) AND ( t1.enable = '0' )   ORDER BY t2.id desc) T LIMIT 0,5

再套一个 select

select DISTINCT * from   (`object_id`, t3.width as width, t3.height as height,t3.ismark as ismark, t2.rtime as     add_time,t1.add_author as add_author,t1.image_url as image_url,t1.id as id,t1.browse_real_cnt as   browse_real_cnt   from comments as t2   left join ornamentations as t1 on t1.id = t2.object_id   left join ornamentation_images as t3 on t3.ornamentation_id = t1.id   where ( t2.uid = 1013 ) AND ( t1.enable = '0' )   ORDER BY t2.id desc) T LIMIT 0,5

报错,报
from comments as t2
from错了

哦,漏了 select
..... from
( select `object_id`, t3.width as....