sql - 将 1 个随机记录从一个表转移到另一个表
问题描述
在 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
变量
任何帮助将非常感激
解决方案
WITH CTE AS (
SELECT TOP 1
*
FROM
[Test1]
ORDER BY
NEWID()
)
DELETE FROM CTE
OUTPUT deleted.*
INTO [Test2]
推荐阅读
- sql - 我无法在 PostgreSQL 上创建表
- r - 更改饼图中的背景颜色
- javascript - 计算数字数组的总和
- javascript - 使用 javascript 方法 .split( ) 对 URL 进行切片
- c - 使用列表进行 Shell 模拟
- javascript - 如何处理同一页面不同图表的点击事件
- php - Laravel 错误:SQLSTATE [23000]:完整性约束违规:1062 重复条目(仅当作为 artisan 命令运行时)
- python - Python OS.PATH:为什么 abspath 改变值?
- angular - 将新顶点拖放到 mxGraph 画布
- angular - “ng lint --fix”无法修复我的文件,但仍然可以识别所有预期要修复的错误