[英]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 遵循的标准,用于为常见对象提供通用视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.