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;
我想像这样写一个 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;