我想写一个像这样的select distinct语句:
INSERT INTO Table2(ID, ColA, ColB, ColC)
SELECT DISTINCT ID,ColA, ColB, ColC
FROM Table1
现在发生的是由于ID字段而复制了所有数据。我是否可以使用选择不同的查询创建一个insert into语句,该查询从ColA,ColB,ColC中选择不同的数据,还可以将ID字段插入Table2而不将其用于Select distinct查询?
问候
答案 0 :(得分:1)
您可以尝试将table2的ID字段作为主键或标识列,然后使用GROUP BY,您可以尝试:
INSERT INTO Table2(ColA, ColB, ColC)
SELECT ColA, ColB, ColC FROM Table1
GROUP BY ColA, ColB, ColC
答案 1 :(得分: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;
答案 2 :(得分:0)
另一种方法是使用Identity
函数。
SELECT DISTINCT IDENTITY(int, 1, 1) AS id,
ColA,
ColB,
ColC
INTO Table2
FROM Table1
注意: IDENTITY
函数只能在SELECT
语句具有INTO
子句时使用。您无法在Insert ..into