2011-08-16 10 views
0

當我們這樣做SELECT * FROM table我們得到表中的所有記錄,如果我想只有一個行,但不知道列類似於select *在SQL,但只有一排

id att1 att2 att3.... attx 
------------------------------- 
1  45  5  3  7 

如何執行返回所有列的select語句? 我知道我必須使用

from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'myTable' 

和Where子句:WHERE id = 1

但同樣,我不知道列數...

+1

什麼數據庫引擎? MySQl,MSSQL,Innodb,...? (我認爲MSSQL?) –

+0

難道你不能只從SELECT INFORMAT ...? –

+0

搜索「[sql] rows as columns」可以給出許多結果,你試過了嗎? http://stackoverflow.com/search?q=[sql]+rows+as+columns – Nivas

回答

1

就在where子句添加到@sql語句的結束您的選擇限制到你想要的行:

declare @cols nvarchar(max) 

select @cols = coalesce(@cols + ', ' + column_name, column_name) 
from information_schema.COLUMNS 
where TABLE_NAME = 'mytable' 

declare @sql nvarchar(max) 
select @sql = 'select ' + @cols + ' from myTable where Id = 1' 

exec sp_executesql @sql 
+0

對不起@Derek:我可以將結果插入到表中,並使該ID成爲每列的ORDINAL?,因此我會得到一個新的表,其中的列序號作爲其id和值列值? – cMinor

0

沒有必要知道的列數如果你對抽出所有細節感興趣。只要給where條件與select *

+0

如果我需要將它們插入到表格中,我要添加什麼來查詢? – cMinor

+1

對於插入,您應該知道列數。 – Mahesh

+0

@Mahesh不一定。你可以使用'SELECT INTO'插入到一個新表中。 (雖然我同意你對現有表格的陳述) – jadarnel27

1

*意味着你想要所有的列,而不是所有的「記錄」。

select * 
from YourTable 
where ID = 1 
+1

數據庫表有**行** - 不是記錄 - 但是否則,你是正確的:-) –

+0

@marc_s - 不能爭辯那:) 。我剛剛選擇了OP使用的單詞。 –