2015-10-28 114 views
2

不同,我想写一个SELECT DISTINCT声明是这样的:SQL服务器选择具有ID

INSERT INTO Table2(ID, ColA, ColB, ColC) 
SELECT DISTINCT ID,ColA, ColB, ColC 
FROM Table1 

现在会发生什么情况是,所有的数据,因为ID字段复制。我可以使用选择不同的查询来从ColA,ColB,ColC中选择不同的数据,并且还可以将ID字段插入到Table2中,而不用于Select distinct查询,从而创建插入语句?

问候

回答

1

使用CTE

查询

;with cte as 
(
    select rn = row_number() over 
    (
     partition by cola,colb,colc 
     order by id 
    ),* 
    from Table1 
) 
insert into Table2(id,cola,colb,colc) 
select id,cola,colb,colc 
from cte 
where rn = 1; 

SQL Fiddle

+0

谢谢!那就是我正在寻找的! –

1

你可以试着让你的表2的主键或标识列的ID字段,然后使用GROUP BY你可以试试这个:

INSERT INTO Table2(ColA, ColB, ColC) 
SELECT ColA, ColB, ColC FROM Table1 
GROUP BY ColA, ColB, ColC 
0

另一种方法是使用Identity功能。

SELECT DISTINCT IDENTITY(int, 1, 1) AS id, 
        ColA, 
        ColB, 
        ColC 
    INTO Table2 
    FROM Table1 

注:SELECT语句具有INTO子句IDENTITY功能才能使用。你不能在Insert ..into