2010-10-16 167 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) 

當然可能有更聰明的方式,但是這是一個開始

你也可以換這一切在存儲過程,以使其更容易和可讀性

希望它能幫助

相關問題