在 mssql 服务器上,我尝试将单个随机记录从一个表传输到另一个表
我的 sql 脚本应该
- 从名为“Test1”的表中选择一个随机记录
- 从表“Test1”中删除在步骤 1 中获得的特定记录
- 将此记录添加到表“Test2”
到目前为止我发现
从表 Test1 中获取一条随机记录
SELECT TOP 1
*
FROM
[Test1]
ORDER BY
NEWID()
删除名为“uno”的列等于“1”的记录,并将已删除的记录放在名为“Test2”的表中
DELETE FROM
[Test1]
OUTPUT
deleted.*
FROM
[Test2]
WHERE
[uno] = '1'
我试过这个失败了
DELETE I FROM (
SELECT
*
FROM
[Test1]
ORDER BY
NEWID()
) I
OUTPUT
deleted.*
INTO
[Test2]
这有效,但传输整个表而不是仅 1 个随机行
DELETE FROM
[Test1]
OUTPUT
deleted.*
INTO
[Test2]
WHERE EXISTS (
SELECT TOP 1
*
FROM
[Test1]
ORDER BY
NEWID()
)
我还尝试通过在变量中捕获函数 NEWID() 的结果来分别添加和删除,然后以这种方式插入和删除具有相同唯一 ID 的行
DECLARE @NewReportID uniqueidentifier
SET @NewReportID = NEWID()
INSERT INTO
[Test2]
SELECT TOP 1
*
FROM
[Test1]
ORDER BY
@NewReportID
GO
DELETE TOP 1 FROM
[Test1]
ORDER BY
@NewReportID
但它失败了,因为没有办法使用ORDER BY变量
任何帮助将非常感激