Sql server 2008 从多个表中选择microsoft sql server中的相同列名
是否可以编写查询:Sql server 2008 从多个表中选择microsoft sql server中的相同列名,sql-server-2008,select,Sql Server 2008,Select,是否可以编写查询: SELECT * from table1, table 2, table 3 ... 其中table1.columnname liketable2.columnname liketable3.columnname 我们不知道我们列的名称,我们说的是表1中的任何列。类似于表2的列名。类似于表3的列名。类似于表3的列名 例如:employee id可能是3个表共用的列,或者publisher id可能是3个表共用的列 我可以通过数据库中的图表找到外键或主键,但我想编写一个查询
SELECT * from table1, table 2, table 3 ...
其中table1.column
name liketable2.column
name liketable3.column
name
我们不知道我们列的名称,我们说的是表1中的任何列。类似于表2的列名。类似于表3的列名。类似于表3的列名
例如:employee id
可能是3个表共用的列,或者publisher id
可能是3个表共用的列
我可以通过数据库中的图表找到外键或主键,但我想编写一个查询,只显示与列名标题相同的列。要获取列名:
select sc.name
from sysobjects so inner join syscolumns sc on so.id = sc.id
where so.name = 'tableName'
不知道为什么要这样做,所以有点难以控制,但数据库中有许多表和视图描述了数据库 应该从Information_Schema.Columns开始。请注意,这是元数据,如果需要实际表的内容,则必须更进一步,并构建一些动态sql或等效的sql
从信息模式中选择列名称,将(*)计数为numberofoccurrences。列
将为您提供列名以及您使用列名的频率。如果您知道列名并想知道在哪个不同的表中使用了相同的列名,请将SQL查询编写为 选择schema_name(t.[schema_id])+'.+t.[name]作为sys.Tables t中的表,在t.[object_id]=c.[object_id]中连接sys.columns c,其中c.[name]='Your_Common_Column_name'
从SQL Server 2005开始,您将获得所有表列表及其各自的模式,最好使用
sys
模式中的新视图,例如sys.columns
和sys.tables
谢谢,您的语法将所有列名显示在一个表中,但我的问题是在3个表中显示相同的列名和它们的数据。有点像那种联盟。您必须构造sql来执行类似的操作,例如Exec('Select*From'+@TableName),其中您从模式的某个查询中获得了TableName。