用sql语句进行多表连接查询出现重复数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用sql语句进行多表连接查询出现重复数据相关的知识,希望对你有一定的参考价值。

select
pdtl.PayGUID,
payR.PayAccount,
payR.PayBank,
p.ProjName ,
u.UserName ,
u.WorkNo ,
u.CardNumber ,
u.ContactMobile ,
u.CompanyEmail ,
CAST(ROUND(pdtl.PayPrincipal / 10000.00, 2) AS DECIMAL(18, 2)) AS PayPrincipal ,
'1:' + CAST(pdtl.OrderRate AS VARCHAR(10)) + '倍' AS ConfirmRate ,
CAST(ROUND(( pdtl.PayPrincipal)
/ 10000.00, 2) AS DECIMAL(18, 2))* (pdtl.OrderRate+1) AS AmountTotal
from gt_PayDtl pdtl
INNER JOIN dbo.gt_Pay pay ON pdtl.PayGUID = pay.PayGUID
INNER JOIN dbo.p_Project p ON pay.ProjGUID = p.p_projectId
INNER JOIN dbo.gt_User u ON pdtl.UserGUID = u.UserGUID
left join dbo.gt_PayRecord payR on payR.PayGUID=pdtl.PayGUID
where pdtl.PayPrincipal>0

我一inner join dbo.gt_PayRecord payR on payR.PayGUID=pdtl.PayGUID 就出现几万行数据,该怎么改呢?

1、在电脑上打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表。

2、输入“select * from user where name in (select name from user group by name having count(name) > 1) ”sql语句,点击运行可以看到查询出了数据库中user表的重复数据。

3、通过“delete from user where   name in (select name from user group by name  having count(name) > 1) ”sql语句删除姓名重复的数据。

4、也可以通过“select distinct name from user”sql语句来去掉重复数据,这里去掉了张三的重复数据。

5、通过“select distinct class from user”sql语句来去掉班级相同的重复数据。

参考技术A

1、用select语句,查看两个表中的数据,确认下来的结果是每个表中都只有两行数据;

2、尝试着用最常用的两表结合查询方式来看看结果----结果重复出现,并且结果错误:select a.pono,a.p_name,a.p_kg as 系统重量,b.p_kg as 实际重量 from test1 a,test2 b where a.pono=b.sono;

3、执行完整代码,可以得出结果,select isnull(a.pono,b.sono) as pono,isnull(a.p_name,b.p_name) as p_name, a.p_kg as 系统重量、 b.p_kg as 实际重量、 from test1 as a 、full join test2 as b on a.pono = b.sono、and  a.p_name = b.p_name。

参考技术B 你这些关联表的条件以及表的字段外键关系没问题。最主要的是你没给出重复是哪些数据
where pdtl.PayPrincipal>0应该是where后这个条件不够严禁
看下面截图
pdtl.PayGUID这个字段重复,但是这是一个1对多的数据
参考技术C 你根据实际情况加个group by就好了。 参考技术D 重复的数据发几条出来看看啊追问

正确条数应该是700多

追答

图没有弄全,比如第一条数据,下面也重复的,实在是无法看出那个条件有问题。
你用到的表,所有叫王坤鹏的数据都贴出来

为啥我sql语句用group by老查出两条连续相同的记录?比如本来3条结果,会出现6条。

你显示的数据重复,但是你多表关联的其他字段肯定有不重复的,
如果你想看看就输出的时候打*,自己看一下,肯定有不重复的
如果重复部分是你要的结果,你可以用distinct去重你要的几个字段
参考技术A 几张表关联查询数据的?如果是,看关联字段的准确性。。
是不是缺少关联字段。
参考技术B 语句没有贴出来,别人怎么帮你回答。 参考技术C 多表查询的!你distinct之后看看

以上是关于用sql语句进行多表连接查询出现重复数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库多表查询

MySQL数据库多表查询

SQL怎么连接查询2个表?

sql多表连接查询问题

用join连接三个表的查询,该怎么写语句?

TypeORM 无关联关系的mysql多表连接查询