Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 如何使用信息模式查找两个表之间的公共字段?_Sql_Sql Server - Fatal编程技术网

Sql 如何使用信息模式查找两个表之间的公共字段?

Sql 如何使用信息模式查找两个表之间的公共字段?,sql,sql-server,Sql,Sql Server,例如,如果我需要加入TableA和TableB,我如何使用INFORMATION_SCHEMA数据库来查找它们之间的公共字段 这里有一种方法: select column_name from information_schema.columns c where table_name in ('A', 'B') group by column_name having count(*) = 2; 如有必要,您还应包括表格\u架构,以识别表格。以下是一种方法: select column_name

例如,如果我需要加入TableA和TableB,我如何使用INFORMATION_SCHEMA数据库来查找它们之间的公共字段

这里有一种方法:

select column_name
from information_schema.columns c
where table_name in ('A', 'B')
group by column_name
having count(*) = 2;
如有必要,您还应包括
表格\u架构
,以识别表格。

以下是一种方法:

select column_name
from information_schema.columns c
where table_name in ('A', 'B')
group by column_name
having count(*) = 2;

如有必要,您还应包括
表\u架构
,以识别表。

另一种获取两个表中公共字段的方法:

SELECT  C.name
FROM    SYS.OBJECTS O
JOIN    SYS.COLUMNS C
ON      O.object_id = C.object_id
WHERE   O.name IN
(
'TABLE-A', 'TABLE-B'
)
group by C.name
having count(*) = 2;
SELECT  A.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS A 
JOIN INFORMATION_SCHEMA.COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME 'Table_1' 
AND B.TABLE_NAME = 'Table_2'

在两个表中获取公共字段的另一种方法:

SELECT  C.name
FROM    SYS.OBJECTS O
JOIN    SYS.COLUMNS C
ON      O.object_id = C.object_id
WHERE   O.name IN
(
'TABLE-A', 'TABLE-B'
)
group by C.name
having count(*) = 2;
SELECT  A.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS A 
JOIN INFORMATION_SCHEMA.COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME 'Table_1' 
AND B.TABLE_NAME = 'Table_2'

在两个表中获取公共列的方法:

SELECT  C.name
FROM    SYS.OBJECTS O
JOIN    SYS.COLUMNS C
ON      O.object_id = C.object_id
WHERE   O.name IN
(
'TABLE-A', 'TABLE-B'
)
group by C.name
having count(*) = 2;
SELECT  A.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS A 
JOIN INFORMATION_SCHEMA.COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME 'Table_1' 
AND B.TABLE_NAME = 'Table_2'

在两个表中获取公共列的方法:

SELECT  C.name
FROM    SYS.OBJECTS O
JOIN    SYS.COLUMNS C
ON      O.object_id = C.object_id
WHERE   O.name IN
(
'TABLE-A', 'TABLE-B'
)
group by C.name
having count(*) = 2;
SELECT  A.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS A 
JOIN INFORMATION_SCHEMA.COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME 'Table_1' 
AND B.TABLE_NAME = 'Table_2'

您能解释一下“包含表\架构”是什么意思吗?同一数据库中的多个表可以具有相同的名称,仅通过它们所在的架构进行区分。您的查询可以工作,但它只显示我要联接的两个表共享的列名。喂,我想加入ORDR&OPOR。我将编写一个如下所示的查询->选择ordr.doctotal,opor.docnum from ordr join opor on ordr.primarykey=opor.foreignkey。如果我已经知道ORDR的主键是DocEntry,我如何找到匹配的OPOR外键来链接这两个表?您能解释一下“包含表_模式”是什么意思吗?同一数据库中的多个表可以有相同的名称,仅通过它们所在的架构进行区分。您的查询可以工作,但它只显示我要联接的两个表共享的列名。喂,我想加入ORDR&OPOR。我将编写一个如下所示的查询->选择ordr.doctotal,opor.docnum from ordr join opor on ordr.primarykey=opor.foreignkey。如果我已经知道ORDR的主键是DocEntry,那么如何找到匹配的OPOR外键来链接这两个表?