繁体   English   中英

从 sql 的结果中删除重复项

[英]Remove duplicates from result in sql

我在 java 项目中有以下 sql :

select distinct * from drivers inner join licenses on  drivers.user_id=licenses.issuer_id
        inner join users on drivers.user_id=users.id 
        where (licenses.state='ISSUED' or drivers.status='WAITING')
        and users.is_deleted=false 

结果 i 数据库如下所示: 在此处输入图像描述

我只想得到一个结果而不是两个重复的结果。 我怎样才能做到这一点?

解决方案 1 - 那是因为其中一个数据具有重复值写入不同的关键字,只有你想要的列

Select distinct id, distinct  creation_date, distinct  modification_date from 
YourTable

解决方案 2 - 仅在 ID 上应用 distinct,一旦获得 id,您就可以在查询中使用所有数据

select * from yourtable where id in (select distinct id from drivers inner join 
 licenses 
 on drivers.user_id=licenses.issuer_id
 inner join users on drivers.user_id=users.id 
 where (licenses.state='ISSUED' or drivers.status='WAITING')
 and users.is_deleted=false )

select 上的枚举字段名称,对值为 null 的字段使用 COALESCE。

通常您不会使用 *(所有列)进行不同的查询,因为这意味着如果一列具有相同的值但 rest 不是,它将被视为不同的行。 所以你必须只区分你想要的列,然后获取数据

我怀疑你想要这样的left join

select *
from users u left join
     drivers d
     on d.user_id = u.id and d.status = 'WAITING' left join
     licenses l
     on d.user_id = l.issuer_id and l.state = 'ISSUED'
where u.is_deleted = false and
      (d.user_id is not null or l.issuer_id is not null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM