sql server选择与ID不同

时间:2015-10-28 06:42:47

标签: sql-server select distinct

我想写一个像这样的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查询?

问候

3 个答案:

答案 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;

SQL Fiddle

答案 2 :(得分:0)

另一种方法是使用Identity函数。

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

注意: IDENTITY函数只能在SELECT语句具有INTO子句时使用。您无法在Insert ..into

中使用此功能