首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql insert select from -具有唯一列id的多个行

Sql insert select from -具有唯一列id的多个行
EN

Stack Overflow用户
提问于 2012-07-05 16:16:35
回答 5查看 11.8K关注 0票数 3

我正在尝试使用insert select from使用一个查询复制多条记录。

代码语言:javascript
复制
Insert into tab_A(colId, col1, col2, col3)
Select colId, col1, col2, col3  form tab_A
Where colId in ( 2,4,6)

是否可以为新条目分配不同的colId?例如,大肠杆菌2应替换为23,4应替换为24,6应替换为25。我如何在一个查询中实现它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-05 16:24:20

这将会起作用

代码语言:javascript
复制
Insert into tab_A(colId, col1, col2, col3)
Select 23 , col1, col2, col3  form tab_A Where colId = 2 UNION ALL
Select 24 , col1, col2, col3  form tab_A Where colId = 4 UNION ALL
Select 25 , col1, col2, col3  form tab_A Where colId = 6 

如果你提供更多的信息,我可以提供一些更可重用的东西。colId (be)是否应该是标识列?

编辑

这在这种非常特殊的情况下是可行的。

代码语言:javascript
复制
Insert into tab_A(colId, col1, col2, col3)
Select ((colId - 4) * (-1)) + colId + 20 , col1, col2, col3  
    form tab_A Where colId IN (2, 4, 6)

函数newId = ((oldId - 4) * (-1)) + oldId + 20显然是特定于所述问题的。

EDIT2

我怀疑像这样的更通用的方法是合适的。

代码语言:javascript
复制
DECLARE @MaxColID INT

BEGIN TRANSACTION

SELECT @MaxColID = MAX(ColID) FROM tab_A

INSERT tab_A(colId, col1, col2, col3)
SELECT row + @MaxColID, col1, col2, col3
    FROM
    (
        SELECT ROW_NUMBER() OVER (ORDER BY ColID) row, col1, col2, col3
        FROM tab_A WHERE colID IN (2, 4, 6)
    )

COMMIT

编辑3个

如果您认为EDIT 2实际上是您想要的,那么您真的想让ColID成为IDENTITY列,那么您可以这样做。

代码语言:javascript
复制
INSERT tab_A (col1, col2, col3)
SELECT col1, col2, col3  FROM tab_A WHERE colId IN (2, 4, 6)
票数 3
EN

Stack Overflow用户

发布于 2012-07-05 16:24:27

我在您的查询中没有看到col4或col6,但这是您想要的吗:

代码语言:javascript
复制
Insert into tab_A(colId, col1, col2, col3)
Select colId, col1, 23, col3  form tab_A
Where colId in ( 2,4,6)
票数 0
EN

Stack Overflow用户

发布于 2012-07-05 16:43:01

您是否刚刚尝试向colId添加disired差-在您的示例中,由于您需要将2替换为23,因此差是21。

代码语言:javascript
复制
Insert into tab_A(colId, col1, col2, col3) 
Select colId+21, col1, col2, col3 
form tab_A Where colId in ( 2,4,6) 

:我错过了这一部分,在你的情况下,差异是不一致的。建议的解决方案只有在差异相同的情况下才有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11340354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档