首页 > 解决方案 > 使用 SQL Server Management Studio 为表中的前 100 个值创建脚本

问题描述

我想用 SQL Server Management Studio 为表中的值生成一个脚本。我只想要前 100 名。我已经找到了一种方法来编写所有内容,方法是转到任务 -> 生成脚本...

生成脚本

我只选择了数据,但它返回了整个表:

生成脚本选项

我只需要前 100 行。有没有办法做到这一点?

谢谢!

标签: sql-servertsqlssms

解决方案


如果您想在第一步中为 TOP 100 记录集生成 INSERT 脚本,并在第二步中执行生成的脚本,您可以尝试以下操作:

DROP TABLE IF EXISTS #source;
DROP TABLE IF EXISTS #target;

CREATE TABLE #source ( value1 INT, value2 VARCHAR(100) );
CREATE TABLE #target ( value1 INT, value2 VARCHAR(100) );

INSERT INTO #source
VALUES (10, 'A100'), (10, 'A101'), (10, 'A102'), (10, 'A103'), (20, 'B100'), (20, 'B101')

-- STEP 1: GENERATE SCRIPT

SELECT TOP 3 sql = 'INSERT INTO #target(value1, value2) VALUES' + '(' + CAST(value1 AS VARCHAR(100)) + ', ''' + value2 + ''');'
FROM #source
ORDER BY value2 DESC

-- STEP 2: EXEC GENERATED SCRIPT

INSERT INTO #target(value1, value2) VALUES(20, 'B101');
INSERT INTO #target(value1, value2) VALUES(20, 'B100');
INSERT INTO #target(value1, value2) VALUES(10, 'A103');

-- RESULT:

SELECT * FROM #target;

如果您有很多列要处理,那么转换和重铸为 VARCHAR 可能会让人筋疲力尽。如果不需要创建临时脚本,那么这样会更容易:

INSERT INTO #target(value1, value2)
SELECT TOP 3 value1, value2 FROM #source;

推荐阅读