mysql - 通过删除重复项添加唯一约束
问题描述
我的 mysql 表如下所示:
CREATE TABLE "my_table" (
"id" int(11) NOT NULL AUTO_INCREMENT,
"content" blob NOT NULL,
"business_id" varchar(255) NOT NULL
PRIMARY KEY ("id")
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=latin1;
该表可以包含具有相同“business_id”的多行。我想让 business_id 列独一无二。为此,我想删除除最后一个之外共享一个 business_id 的所有行。
例如,如果我有以下几行
10 'hello' '5'
...
21 'hello' '5'
...
350 'hello' '5'
我想删除 id 10 和 21 的行。
我被困在如何编写删除查询上。我不知道如何表达这种约束。
解决方案
删除前备份您的数据库:
delete FROM my_table where business_id in
(select business_id from (select business_id from my_table group by business_id having count(business_id)>1) t)
and business_id not in
(select maxid from (select max(business_id) maxid from my_table group by business_id having count(business_id)>1) t1);
推荐阅读
- pyspark - pyspark:如何在 `val` 是 python 中的变量的计算中使用多个`lit(val)`?
- java - 有什么方法可以在 google face detection ML Kit 中检测到超过 12 个地标点
- apache-flink - 无法通过 curl 请求使用 post 请求在 Flink 中提交作业(请求不匹配...)
- ionic-framework - 是否有任何可以与离子框架集成的健康/健身乐队?
- sql - 违反主键约束“PK__Transact__”。无法在对象“dbo.Transactions_ID”中插入重复键。重复键值为 (1001)
- python - 如何在 PyQt5 中旋转标签或按钮?
- c++ - 通过引用传递向量内联
- google-bigquery - 基于嵌套列对 BigQuery 表进行分区
- angularjs - 类型'typeof Observable'.ts(2339)上不存在属性'of'
- three.js - Aframe 和 AR.js 不显示我的 .gltf 模型