sql-server - 使用 SQL Server Management Studio 为表中的前 100 个值创建脚本
问题描述
我想用 SQL Server Management Studio 为表中的值生成一个脚本。我只想要前 100 名。我已经找到了一种方法来编写所有内容,方法是转到任务 -> 生成脚本...
我只选择了数据,但它返回了整个表:
我只需要前 100 行。有没有办法做到这一点?
谢谢!
解决方案
如果您想在第一步中为 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;
推荐阅读
- c++ - 对内部有 2 对的向量进行排序
- spring-boot - 使用 Spring Security OAuth 时 Spring Boot Reactive WebClient “serverWebExchange must be null”
- angular - ngx-translate (Angular) 中的地区或国家
- css - 可清除的输入覆盖标签填充
- c++ - c++基类未定义C2504
- oauth - 使用 Okta OAuth 请求获取“令牌无效”,为什么?
- python - 将 CNN 更改为使用 3D 卷积
- r - 在 lavaan 中运行 CFA - 显示潜在变量之间的相关性
- c++ - 从 QList 在屏幕上一张一张地绘制图像
在 Qt4.8 中的paintevent() 方法中 - java - 未触发此声纳规则