Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 从多个表中选择microsoft sql server中的相同列名_Sql Server 2008_Select - Fatal编程技术网

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 like
table2.column
name like
table3.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。