sql 服务器 select 与 ID 不同

sql server select distinct with ID

我想像这样写一个 select 不同的语句:

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

现在发生的情况是,由于 ID 字段,所有数据都被复制了。我可以使用 select 不同的查询创建一个插入语句,该查询 selects 来自 ColA、ColB、ColC 的不同数据,但也将 ID 字段插入到 Table2 中而不将其用于 Select不同的查询?

问候

您可以尝试将 table2 的 ID 字段作为主键或标识列,然后使用 GROUP BY 您可以试试这个:

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

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

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

注意:只有当SELECT语句有INTO子句时才能使用IDENTITY函数。您不能在 Insert ..into

中使用它

使用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