2015-10-28 247 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