2013-01-01 24 views
0

的Microsoft SQL Server選擇相同的列名是否可以編寫一個查詢:從多個表

SELECT * from table1, table 2, table 3 ... 

其中table1.column名狀table2.column名狀table3.column

我們不知道的名字我們的專欄,我們說任何我們在table1中的專欄。 列名如表2。在像table3.column名

例如列名employee id也許是一列,它是常見的3個表,或publisher id是一個列,它是常見的3個表。

我可以在數據庫中找到具有圖表的外鍵或主鍵,但我想編寫一個查詢,只顯示與列名稱相同標題的列。

回答

0

要獲得列名:

select sc.name 
from sysobjects so inner join syscolumns sc on so.id = sc.id 
where so.name = 'tableName' 
+0

從SQL Server 2005開始,最好在'sys'模式中使用新的視圖,例如'sys.columns'和'sys.tables' –

+0

謝謝HMariD,你的語法在一個表中顯示了所有的列名,但是我的問題只是在他們的數據中顯示了3個表中相同的列名。像這樣的聯盟。 – user1940864

+0

user1940864。你必須構建sql來做類似的事情,例如Exec('Select * From'+ @TableName)您從哪裏獲取TableName,以查看架構上的某個查詢。 –

1

沒有線索,爲什麼你這樣做,所以有點難以駕馭,但也有一些在數據庫中描述數據庫表和視圖。

Information_Schema.Columns可能是您應該開始的地方。注意這是元數據,如果你想要實際表的內容,你必須更進一步,並建立一些動態的SQL,或同等學歷。

Select Column_Name,Count(*) As NumberOfOccurences From Information_Schema.Columns 會爲您提供列名以及您經常使用它們的頻率。