不久,
我不表示最后5行。通过SELECT TOP 5 * FROM Table Order By Key DESC
为什么?因为每次添加新列并将其填充到SQL Server外部时,我都需要在不移动Horizontal Scroll的情况下查看其结果。并且许多列的开头都有相同的名称。
这不是编码问题。但它与“ SQL-Server IDE结果”选项卡本身有关。
我搜索了很多次。但是我想这件事从来没有问过。所以请我想要一种方法。我假设类似内置功能或任何人都知道的东西
就像我在评论中提到的那样,如果表的定义不断变化,则表明数据库中存在更大的设计缺陷。对象定义应该是非常静态的,并且每次连接到实例时,它们绝对不应更改。这是您问题的根本原因,而不是键入5列的名称而不是“太困难”,而不是使用*
。
这意味着修复您的设计,我们无法对此发表评论,但是我建议您接下来要做的[[major下一步。对您的设计进行规范化,并使用多个表(由于缺乏规范化,我怀疑您每次都会添加额外的列)。
在此期间,您可以使用动态SQL:DECLARE @SQL nvarchar(MAX),
@CRLF nchar(2) = NCHAR(13) + NCHAR(10);
DECLARE @Schema sysname = N'dbo',
@Table sysname = N'rCTE_Vs_Tally';
SET @SQL = N'SELECT ' +
STUFF((SELECT TOP(5)
N',' + @CRLF +
N' ' + QUOTENAME(c.[name])
FROM sys.schemas s
JOIN sys.tables t ON s.schema_id = t.schema_id
JOIN sys.columns c ON t.object_id = c.object_id
WHERE s.[name] = @Schema
AND t.[name] = @Table
ORDER BY C.column_id DESC
FOR XML PATH(N''),TYPE).value('.','nvarchar(MAX)'),1,10,'') + @CRLF +
N'FROM ' + QUOTENAME(@Schema) + N'.' + QUOTENAME(@Table) + @CRLF +
N'ORDER BY [Key] DESC;' --Assumes all tables have the column Key
PRINT @SQL;
EXEC sp_executesql @SQL;
DECLARE @tablename sysname = 'table'
DECLARE @schemaname sysname = 'dbo'
DECLARE @stm nvarchar(max)
SELECT @stm = (
SELECT TOP(5) CONCAT(@stm, N',', col.[name])
FROM sys.columns col
JOIN sys.tables tab ON col.object_id = tab.object_id
JOIN sys.schemas sch ON tab.schema_id = sch.schema_id
WHERE
tab.[name] = @tablename AND
sch.[name] = @schemaname
ORDER BY col.column_id DESC
FOR XML PATH('')
)
SELECT @stm = CONCAT(
N'SELECT ',
STUFF(@stm, 1, 1, N''),
N' FROM ',
QUOTENAME(@schemaname),
N'.',
QUOTENAME(@tablename)
)
PRINT @stm
EXEC sp_executesql @stm
我认为以下内容将回答您的问题:
declare @columns varchar(max)
, @sql varchar(max)
, @tblname varchar(20) = 'Settings'
select @columns = stuff((select top 5 ',' + quotename(column_name)
from information_schema.columns
where table_name = quotename(@tblname)
order by ordinal_position desc
for xml path(''), type).value('.', 'nvarchar(max)'),1,1,'')
set @sql = 'select '+@columns+' from '+quotename(@tblname)
exec (@sql)
请告知是否适合您?
“结束”键。之后,您将在列的结尾。