从多个表中选择microsoft sql server中的相同列名

时间:2013-01-01 19:25:24

标签: sql-server-2008 select

是否可以编写查询:

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

其中table1.column名称与table2.column名称类似table3.column名称

我们不知道列的名称,我们说的是table1中的任何列。列名如 table2。列名,如table3。列名

例如:employee id可能是3个表共有的列,或publisher id是3个表共有的列。

我可以在我的数据库中找到带有图表的外键或主键,但我想编写一个只显示与列名称具有相同标题的列的查询。

3 个答案:

答案 0 :(得分:1)

不知道为什么要这样做,所以有点难以操纵,但数据库中有许多描述数据库的表和视图。

Information_Schema.Columns可能就是您应该从哪里开始的。请注意,这是元数据,如果您希望实际表的内容更进一步,并构建一些动态sql或等效的。

Select Column_Name,Count(*) As NumberOfOccurences From Information_Schema.Columns 将为您提供列名称以及您使用它们的频率。

答案 1 :(得分:1)

如果您知道列名,并且想知道在哪个不同的表中使用了相同的列名,则编写SQL查询为

SELECT schema_name(t。[schema_id])+'。 + t。[名称]作为sys.tables中的表t INNER JOIN sys.columns c on t。[object_id] = c。[object_id] WHERE c。[name] ='Your_Common_Column_Name'

您将获得所有具有相应模式的表列表

答案 2 :(得分:0)

获取列名称:

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