Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bản sao xếp tầng của các hàng trong sql

Bạn có thể sử dụng hợp nhất câu lệnh với mệnh đề đầu ra để có được sự phù hợp giữa id cũ và mới trong questionText. Điều này được mô tả trong câu hỏi này Sử dụng merge..output để ánh xạ giữa source.id và target.id .

Trong trường hợp của bạn, mã sẽ giống như thế này. Mã không được kiểm tra nên có thể có bất kỳ lỗi chính tả nào trong đó nhưng nó cho thấy bạn có thể làm gì.

create procedure CopyQuestion
  @idtocopy int
as

declare @QuestionID int

insert into question
select Name 
from question 
where ID = @idtocopy

select @QuestionID = scope_identity() 

declare @IDs table (NewQID int, OldQID int)

merge questionText as T
using (select ID, @QuestionID as QuestionID, Field
       from questionText
       where QuestionID = @idtocopy) as S
on 0=1
when not matched then
  insert (QuestionID, Field) values (QuestionID, Field)
output inserted.ID, S.ID   into @IDs;       

insert into options
select 
    I.NewQID,
    O.Field
from options O
  inner join @IDs as I
    on O.QuestionTextID = I.OldQID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đọc mẫu char, double, int từ chuỗi trong sql

  2. Bảo quản ORDER BY trong CHỌN VÀO

  3. Không thể tải trình điều khiển:com.microsoft.sqlserver.jdbc.SQLServerDriver weblogic 10g

  4. Tạo tập lệnh trong SQL Server Management Studio

  5. SQL GUID Vs Integer