sql-server - 打印出表名和列名时获取表中的第一行
问题描述
我需要快速查看 MS SQL 数据集中的数据,并找到以下代码,除了我需要的最后一列之外,它提供了所有内容。第三列应显示第一行的数据。
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
所以我的问题是我应该如何制定 SQL 查询以获取包含第一行数据的第三列)?
//更新 这段代码给了我我想要的一切,除了数据来自哪个表。(在 Yaroslav 在Select the first 3 rows of each table in a database 中回答的类似问题中)
DECLARE @sql VARCHAR(MAX)='';
SELECT @sql=@sql+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';'
FROM sys.tables
EXEC(@sql)
解决方案
如果我理解正确,一种方法是未记录的存储过程sp_MsForeachTable
。问号是表格名称的占位符:
提示:编辑“YourDataBase”...
EXEC sp_msforeachtable 'USE YourDataBase;SELECT TOP 1 ''?'' AS TableName, * FROM ?';
使用此查询,您可以轻松浏览所有第一行
CREATE TABLE #test(TableName NVARCHAR(MAX),Content XML)
EXEC sp_msforeachtable
'USE YourDataBase;INSERT INTO #test SELECT ''?'' AS TableName, (SELECT TOP 1 * FROM ? FOR XML PATH(''row''))';
SELECT * FROM #test;
更新
您自己的代码也会返回表的名称。尝试这个
DECLARE @sql VARCHAR(MAX)='';
SELECT @sql=@sql+'SELECT TOP 3 ''' + t.[name] + ''' AS TableName, * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';'
FROM sys.tables t
EXEC(@sql)
推荐阅读
- javascript - _reactNativeRouterFLux.Actions.EmployeeEdit 不是函数
- gatling - 在 Gatling 中增加每秒请求数
- fmt - 使用 fmt 库格式化用户定义类型的问题
- css - 使用 CSS-Sprite 的一部分作为重复的背景图片
- python - 在 Python 中评估极坐标网格上的插值函数的最快方法是什么?
- python-3.x - Numpy Python:异常:数据必须是一维的
- c# - CNTK 添加双向 LSTM 层
- java - 在 Java 中,“a.ByteArray”的类型是否等于“[B”?
- python-3.x - 在函数之间共享变量
- assembly - 在 yasm 中,当针对 32 位代码时,如何在 jmp 附近指定 16 位?