MySql-left join 重复数据问题(前提:表关系为一对一)

问题描述

1.数据库中存在一对一关系的两张表通过LEFT JOIN 关联出重复数据


表一与表二关联字段 t_fault.id = t_act_business.table_id

表一:
CREATE TABLE `t_fault` (
  `id` varchar(255) NOT NULL,
  `create_by` varchar(255) DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `del_flag` int(11) DEFAULT 0,
  `update_by` varchar(255) DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

表二:
CREATE TABLE `t_act_business` (
  `id` bigint(20) unsigned NOT NULL,
  `create_by` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `del_flag` tinyint(1) DEFAULT NULL,
  `update_by` varchar(255) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `table_id` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8


2.值"1517427177589706753"在两张表中都仅有一条数据

t_act_business:
在这里插入图片描述
t_fault:
在这里插入图片描述

3.执行以下SQL出现重复

SELECT
t_act_business.`create_time`,
t_act_business.`table_id`,
t_fault.id
FROM
`t_act_business`
LEFT JOIN `t_fault` ON t_act_business.`table_id` = t_fault.`id`

在这里插入图片描述

原因分析:

表一:t_fault id类型为varchar
表二:t_act_business table_id类型为 bigint

两张表关联字段类型不同


解决方案:

1.通过自然连接处理

SELECT
t_act_business.`create_time`,
t_act_business.`table_id`,
t_fault.id
FROM
`t_act_business`,`t_fault` 
WHERE t_act_business.`table_id` = t_fault.`id`

在这里插入图片描述

2.统一字段类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值