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 中可用的表是
- dbo.sample1
- dbo.sample2
- dbo.sample3
- dbo.sample4
- dbo.sample5
- dbo.sample6
- dbo.sample7
- dbo.sample8
- dbo.sample9
- 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
之后你必须比较文件名
我的 SQL 服务器数据库中总共有 10 个 table。在这 5 table 中有 21 列,前 5 列和后 3 列同名。
我如何编写一个 SQL 查询来 select 我得到这 5 个 table 的名字。
[使用 SQL 服务器数据库中的列数和列名称选择 table 名称]
例如:-
数据库名称 - SampleDB
SampleDB 中可用的表是
- dbo.sample1
- dbo.sample2
- dbo.sample3
- dbo.sample4
- dbo.sample5
- dbo.sample6
- dbo.sample7
- dbo.sample8
- dbo.sample9
- 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
之后你必须比较文件名