关于复杂插入语句

Freefish1994 2017-07-03 04:36:42
我有两张表A和B,想先查询A表中的一条记录,将A表记录中的其中几个字段作为值插入到B表中,同时B表在插入是要生成32位UUID求教各位大神这段语句要怎么写!
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2017-07-03
  • 打赏
  • 举报
回复
replace(newid(),'-','')
二月十六 版主 2017-07-03
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
INSERT INTO B(字段1,字段2,UUID)SELECT TOP 1 字段1,字段2,@id FROM A
忘了写32位的UUID了……
  DECLARE @newid varchar(36) = NEWID()
  DECLARE @id VARCHAR(32);  
  select @id=SUBSTRING(@newid,1,8)+SUBSTRING(@newid,10,4)+SUBSTRING(@newid,15,4)+ SUBSTRING(@newid,20,4)+SUBSTRING(@newid,25,12) 
吉普赛的歌 版主 2017-07-03
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('dbo.A') IS NOT NULL
DROP TABLE dbo.A
GO
IF OBJECT_ID('dbo.B') IS NOT NULL
DROP TABLE dbo.B
GO
CREATE TABLE dbo.A(aId INT IDENTITY(1,1),c1 INT,c2 NVARCHAR(10))
CREATE TABLE dbo.B(bId UNIQUEIDENTIFIER,c1 INT,c2 NVARCHAR(10))
GO
INSERT INTO dbo.A(c1,c2) VALUES(1,'a'),(2,'b')
SELECT * FROM dbo.A
/*
aId	c1	c2
1	1	a
2	2	b
*/
INSERT INTO dbo.B(bId,c1,c2)
SELECT NEWID(),c1,c2 FROM dbo.A

SELECT * FROM dbo.B
/*
bId	                                    c1  c2
7047A8F7-DCAF-49FB-BFFD-99B36B4A3DD3	1	a
3353312D-E353-4258-B6FD-E1F26F98D896	2	b
*/
二月十六 版主 2017-07-03
  • 打赏
  • 举报
回复
INSERT INTO B(字段1,字段2,UUID)SELECT TOP 1 字段1,字段2,@id FROM A

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧