sql使用distinct而将其他列插入新表

时间:2014-06-02 16:37:28

标签: sql sql-server tsql

我的表格中基本上有很多重复的字段,下面的代码有助于解决这个问题

select  distinct city,state into dbo.zips from zipcodes

a基本上查看zipcodes中具有重复 city,state 的所有行,并在将它们插入新表 dbo.zips 时使其唯一。我的问题是如何插入表格zipcodes中的所有其他字段,以便它也可以转到新的dbo.zips表。我只是想要一个独特的城市,我已经可以做的状态,但也会继续我试图做的所有其他领域

select *  distinct city,state into dbo.zips from zipcodes

但它无效

3 个答案:

答案 0 :(得分:0)

如何将连接重新放回同一个表:

select distinct z.city, z.state, z1.field1, z1.field2 ... z1.fieldn
into dbo.zips
from zipcodes z
inner join zipcodes z1 on z1.city=z.city and z1.state=z.state

答案 1 :(得分:0)

但是如果城市,州是重复的那么其他列中的哪一个 它们可能不重复 许多城市都有多个邮政编码 我不明白为什么你只想要一个表名为zips的城市的一个邮政编码

select city, state, min(zip)  
  from zipcodes 
 group by city, state

答案 2 :(得分:0)

我会使用row_number()执行此操作:

select zc.* into dbo.zips
from (select zc.*,
             row_number() over (partition by city, state order by (select null)) as seqnum
      from zipcodes
     ) zc
where seqnum = 1;

如果您不想在决赛桌中使用seqnum,请明确列出您想要的列。