问题描述
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
值"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`
评论区