繁体   English   中英

如何在 SQL 的多个表中找到相同的列

[英]How to find identical columns in multiple tables in SQL

有没有更简单的方法在多个表中查找匹配的列名?

我目前知道如何做到这一点的唯一方法是单独检查每个表,但有些表有一堆列,我知道我的人眼可能会错过一些东西。

对于 SQL 服务器:

SELECT      c.name, string_agg(t.name, ', ')
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
group by c.name

使用information_schema.columns 例如,要获取多个表中的所有列名:

select column_name, string_agg( concat(table_schema, '.', table_name), ',')
from information_schema.columns
group by column_name
having count(*) > 1;

information_schema视图实际上是标准的,可在许多数据库中使用,包括 SQL Server。

在 Oracle

使用 DBA_TAB COLUMNS 或 ALL_TAB_COLUMNS 表,它包含具有表名和其他详细信息的列名

弗拉基米尔的回答是正确的,并且特定于 SQL 服务器。

另一个好的答案是使用 INFORMATION_SCHEMA 视图来检索您要查找的内容。 INFORMATION_SCHEMA 是一些 DBMS 遵循的标准,用于为常见对象提供通用视图。

https://en.wikipedia.org/wiki/Information_schema

https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql?view=sql-server-ver15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM