和你 用 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 `自定义索引名` (`作用的字段名`)
一个表中可以添加多个字段的唯一索引
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)