回答
尝试:
delete from tbl
where writer_id in
(select writer_id
from (select * from tbl) t
where exists (select 1
from (select * from tbl) x
where x.writer_name = t.writer_name
and t.writer_id < x.writer_id));
观看演示: http://sqlfiddle.com/#!2/845ca3/1/0
这使得第一排的每个writer_name
,在writer_id
升序的顺序。
但是,EXISTS子查询将为每一行运行。您也可以尝试:
delete t
from
tbl t
left join (select writer_name, min(writer_id) as writer_id
from tbl
group by writer_name) x
on t .writer_name = x.writer_name
and x.writer_id = t .writer_id
where
x.writer_name is null;
演示:http://sqlfiddle.com/#!2/075f9/1/0
如果有你也可以使用create table as select
没有重复的条目来创建新表的表没有外键约束,删除旧表,并将新表重新命名为旧表的名称,最终得到您想要的结果。 (这不会是要走的路,如果这个表有外键虽然)
这将是这样的:
create table tbl2 as (select distinct writer_name from tbl);
drop table tbl;
alter table tbl2 add column writer_id int not null auto_increment first,
add primary key (writer_id);
rename table tbl2 to tbl;
SELECT a.*
FROM the_table a
INNER JOIN the_table b ON a.field1 = b.field1 AND (etc)
WHERE a.pk != b.pk
希望查询能解决您的问题。
如果我正确阅读,问题是关于删除行,而不是选择.. –
我不能让它工作。我想删除包含相同值的行。如果可能的话,你可以编辑你的答案吗? – salep
您可以使用这个http://stackoverflow.com/questions/8019957/delete-from-where-in – user3827706
DELETE a
FROM tbl a
LEFT JOIN tbl b
ON a.field1 = b.field1 (etc)
WHERE a.id < b.id
这一定帮你
- 1. 在不知道行号的情况下删除特定行
- 2. 在不知道约束名称的情况下删除外键?
- 3. 在不知道类型的情况下删除文件
- 4. 在不知道父项的情况下删除节点(JavaFX)
- 5. 在不知道ItemName的情况下从SimpleDB中删除项目?
- 6. SQLAlchemy:如何在不查询的情况下删除多行
- 7. 使用Rails Migrations在不知道名称的情况下删除索引
- 8. Git行在没有通知的情况下被删除
- 9. 如何在不知道表名的情况下使用NHibernate删除JOIN表(多对多)中的记录
- 10. 在某些情况下从命名范围中删除行
- 11. 在不知道密钥的情况下对多维数组执行if语句
- 12. 在不知道名称的情况下访问对象属性?
- 13. 在不知道PHP扩展名的情况下查找文件
- 14. 如何在不知道类名的情况下调用方法?
- 15. 知道这种情况下
- 16. PHPpgAdmin:如何在不使用SQL的情况下删除行
- 17. 如何在不参考DOM节点的情况下删除行
- 18. 在不知道目录C的情况下删除一个子目录#
- 19. 在不知道对象索引的情况下从数组中删除对象?
- 20. 在不删除整行的情况下删除Google表格中的单元格
- 21. 在不删除mysql中的整行的情况下删除单个数据
- 22. AS3:在不知道金额或名称的情况下移除EventListeners
- 23. 如何在某些情况下使用EF执行删除行?
- 24. 如何知道在特定情况下
- 25. 在不使用.htaccess的情况下删除文件扩展名
- 26. 在不知道约束名称的情况下删除表列上的唯一约束
- 27. 在不知道大小的情况下下载文件
- 28. 如何在不删除列名的情况下删除表数据
- 29. 在不删除映射的情况下删除Elasticsearch索引
- 30. 在没有constarint的情况下删除行
我正在使用一个表,我想删除此表中特定列(writer_name)中的多个记录。这是否使我的问题更清晰? – salep
桌子上有哪些其他栏目?什么决定了哪一行,哪些作者再次出现2,3,4 ...次? –
http://i.imgur.com/hjtxNyo.png见,弗兰兹卡夫卡存在两次。我想删除第二个(或第三个,第四个,取决于具体情况)值。 – salep