select sql table 名称使用列数和名称

select sql table names using column count and name

我的 SQL 服务器数据库中总共有 10 个 table。在这 5 table 中有 21 列,前 5 列和后 3 列同名。

我如何编写一个 SQL 查询来 select 我得到这 5 个 table 的名字。

[使用 SQL 服务器数据库中的列数和列名称选择 table 名称]

例如:-

数据库名称 - SampleDB

SampleDB 中可用的表是

  1. dbo.sample1
  2. dbo.sample2
  3. dbo.sample3
  4. dbo.sample4
  5. dbo.sample5
  6. dbo.sample6
  7. dbo.sample7
  8. dbo.sample8
  9. dbo.sample9
  10. dbo.sample10

在此 tables[dbo.sample1,dbo.sample4,dbo.sample5,dbo.sample7,dbo.sample9] 包含 21 列 each.Also 前 5 列名称和最后这 5 table 的 3 列名称相同。我需要一个查询,它将 select 这 5 个 table 的名称。

输出会像

1 个 dbo.sample1
2 dbo.sample4
3 dbo.sample5
4 dbo.sample7
5 dbo.sample9

有道理吗?

是这样的吗? (如果是 SQL 服务器)

select t.name, c.name, count(*) as duplicate_count from sys.tables t
inner join sys.columns c on c.object_id = t.object_id
group by t.name, c.name
having count(*) > 1

我写 MS SQL 2012 服务器语法 (TSQL)

解决您问题的第一步是找出表有 x (21) 个字段。

SELECT
    So.Name AS TableNames,
    COUNT(Sc.Name) AS FieldCounter
FROM
    Sysobjects AS So    -- List of Tables
LEFT OUTER JOIN
    SysColumns AS Sc    -- List of Fields
ON So.id = sc.ID
WHERE
    So.xtype = 'U'      -- only show for **U**ser sables
GROUP BY
    So.name
HAVING COUNT(Sc.Name) = 21 -- 21 fields in table

之后你必须比较文件名