1、查询重复
Select * From table_name Where name In (Select name From table_name Group By name Having Count(*)>1)
把table_name和name换成你的表名和字段即可
2、去重并保留主键最小的一条
由于Mysql不支持事件1:更新时查询和事件2:查询时更新同时发生,所以必须用中间表把待更新(删除)字段查为中间表后再执行删除。
以下语句把table_name换成你的表,name换成可能重复的字段,id换成你的主键即可使用
delete
FROM
table_name
WHERE
name IN (
SELECT
name
FROM
(
SELECT
name
FROM
table_name
GROUP BY
name
HAVING
COUNT(name) > 1
) e
)
AND id not in (
select dt.minId from (
select min(id) as minId
from table_name GROUP BY name HAVING COUNT(1)>1
) dt
)
3、如果想要直接把某字段的性质设为不重复
那么就需要添加索引,并为不想重复的字段添加唯一性约束
# 建表时
`name` varchar(18) NOT NULL unique,
已经有表:
alter table table_name add unique(name)
删除唯一性约束:
drop index col_name on table_name
4、查询建表语句,包括索引
show create table table_name
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153533.html