mysql连表查询出现重复的数据怎么办

mysql连表查询出现重复的数据怎么办,第1张

重复来自关联 条件了。 如果你用 A left join B on A.t1=B.t2 在B表中t2 有多条,那么你的结果 就会 变成多条了

和你 用 form A,B where A.t1=B.t2 是一样的道理

如A t1 字段

1 2 3 4

B t2 字段

1 ,1,2,2,3

你如果全连接 A.t1=B.t2 就是 A.t1 只要和 B.t2 字段相等,满足这个条件的就连接了。

所以重复了就说明你的连接条件 下 有字段 不是唯一的值

错误提示:不能先将select出表中的某些值,再update这个表(在同一语句中)。

替换方案:

方案一:

多嵌套一层子查询,再进行删除,如下:

完整代码如下:

DELETE FROM blur_article WHERE id NOT IN (

SELECT id FROM (

SELECT min(id) AS id FROM blur_article GROUP BY title

) t

)

方案二:

1.创建一张临时表,将要删除的条件自动存入临时表中:

2.再根据临时表,删除主表数据:

3.最后删除掉临时表:

完整代码如下:

1.create table temp as select min(id) as col1 from blur_article group by title

2.delete from blur_article where id not in (select col1 from tmp)

3.drop table tmp

给字段设置唯一索引

ALTER TABLE `数据库名`.`表名` ADD UNIQUE `自定义索引名` (`作用的字段名`)

一个表中可以添加多个字段的唯一索引


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8494819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存