我有一张两栏的桌子CountryCode CountryName。中有重复的条目countrycode。但是我想删除非重复的整体,并在列中保留重复的countrycode行。因此,我正在尝试编写一条SQL语句来执行此操作。我认为我必须使用“具有但不十分确定如何正确地合并它”。谢谢
CountryCode CountryName
countrycode
有点奇怪。我期望您要删除重复的条目,而不是相反。但是无论您使用的是哪种数据库,类似这样的东西都应该起作用:
delete from TableName where CountryCode in (select CountryCode from TableName group by CountryCode having count(*) = 1).
因此要明确,子查询:
select CountryCode from TableName group by CountryCode having count(*) = 1
…返回具有唯一性的行CountryCodes。然后delete声明:
CountryCodes
delete
delete from TableName where CountryCode in (...)
…删除那些唯一的行,以便表中剩余的唯一行应该是重复的行。
但是,根据您的评论,听起来您只需要一个只返回重复项的查询。如果是这种情况,则只需在select语句内使用子查询,但修改having子句以仅返回重复项:
select
having
select * from TableName where CountryCode in (select CountryCode from TableName group by CountryCode having count(*) > 1)