You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server无约束数据库生成ERD:筛选同名同数据类型列查询问题

修改后的查询语句

优先推荐窗口函数实现版本,逻辑简洁性能更好:

WITH ColumnBaseInfo AS (
    SELECT 
        schema_name(tab.schema_id) AS schema_name,
        tab.name AS table_name,
        col.name AS column_name,
        t.name AS data_type,
        SUM([Partitions].[rows]) AS [TotalRowCount],
        -- 按列名+数据类型分组,统计对应出现的表数量
        COUNT(DISTINCT tab.object_id) OVER(PARTITION BY col.name, t.name) AS table_count
    FROM sys.tables AS tab
    INNER JOIN sys.columns AS col ON tab.object_id = col.object_id
    LEFT JOIN sys.types AS t ON col.user_type_id = t.user_type_id
    JOIN sys.partitions AS [Partitions] ON tab.[object_id] = [Partitions].[object_id]
        AND [Partitions].index_id IN (0,1)
    GROUP BY schema_name(tab.schema_id), tab.name, col.name, t.name
)
SELECT schema_name, table_name, column_name, data_type, TotalRowCount
FROM ColumnBaseInfo
WHERE table_count >= 2
ORDER BY column_name, table_name
修改说明
  • 新增CTE封装原查询逻辑,通过窗口函数统计每一组「列名+数据类型」对应的不同表数量
  • 最终过滤仅保留表数量≥2的记录,自动剔除仅在单张表中存在的列
  • 新增按表名排序规则,方便你直接查看同一潜在关联列对应的所有表

如果不习惯用CTE,也可以用EXISTS子查询实现,逻辑完全等价:

SELECT 
    schema_name(tab.schema_id) AS schema_name,
    tab.name AS table_name,
    col.name AS column_name,
    t.name AS data_type,
    SUM([Partitions].[rows]) AS [TotalRowCount]
FROM sys.tables AS tab
INNER JOIN sys.columns AS col ON tab.object_id = col.object_id
LEFT JOIN sys.types AS t ON col.user_type_id = t.user_type_id
JOIN sys.partitions AS [Partitions] ON tab.[object_id] = [Partitions].[object_id]
    AND [Partitions].index_id IN (0,1)
WHERE EXISTS (
    SELECT 1
    FROM sys.tables t2
    INNER JOIN sys.columns c2 ON t2.object_id = c2.object_id
    LEFT JOIN sys.types ty2 ON c2.user_type_id = ty2.user_type_id
    WHERE c2.name = col.name 
      AND ty2.name = t.name
      AND t2.object_id <> tab.object_id
)
GROUP BY schema_name(tab.schema_id), tab.name, col.name, t.name
ORDER BY col.name, table_name

内容的提问来源于stack exchange,提问作者Francesco Mantovani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:09:03