2010-10-16 296 views
2

我有一个数据库中的表用户表SQL:查找SQL表中第一行第一列

CREATE TABLE [UserTable](
    [ID] [int] NULL, 
    [Name] [nvarchar](50) NULL, 
    [City] [nvarchar](50) NULL 
) ON [PRIMARY] 

此表有如下数据

 
ID    Name      City 
----------- -------------------------------- 
1    Vijendra     Delhi 
2    Singh      Noida 
3    Shakya     New Delhi 

现在质疑有什么办法找出第一列第一行没有指定列名称(我不想使用任何列名称),这与查找矩阵符号相同,这将是第[1,1]个位置。

我可以找出第一列第一行与

Select Top 1 City from UserTable 

我不希望用户在列名(市)。

可能吗? 如果是,请告诉我如何实现这一目标。

+0

为什么你想这样的事情?列出名称是有原因的 - 所以你可以使用名字来访问它们。只是使用序号会降低可读性,对于大多数表格来说,没有任何意义。 – Oded 2010-10-16 18:48:59

+0

@Oded:只想知道我们可以做或不做。 – Vijjendra 2010-10-16 19:21:31

+0

也没有“第一行”。由于您没有指定ORDER BY子句,所以查询“从UserTable中选择Top 1城市”可以完全合法地返回任何行。您可能期望它根据“ID”顺序返回顶部1,但如果您在“城市”列中添加索引,这可能会发生变化。在任何情况下都不能保证任何特定的结果。 – 2010-10-16 19:25:13

回答

0

通常,关系数据库不具有用户在给定查询中未指定的行或列排序的概念。

0

在快速的方式,你可以通过编写一些代码做到这一点,使用动态SQL:

declare @field varchar(100), @SQL varchar(500) 
    set @field = (SELECT top 1 COLUMN_NAME FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'UserTable') 
    set @SQL = 'select top 1 ' + @field + ' from UserTable' 
    exec (@SQL) 

当然可能有更聪明的方式,但是这是一个开始

你也可以换这一切在存储过程,以使其更容易和可读性

希望它能帮助

相关问题