我有81桌,我要找到匹配的列和輸出就像一個列表:查找所有表匹配列
"columnName" found in 3 tables:
table1
table2
table3
"columnName2" found in 4 tables:
table1
table3
table4
table5
我有81桌,我要找到匹配的列和輸出就像一個列表:查找所有表匹配列
"columnName" found in 3 tables:
table1
table2
table3
"columnName2" found in 4 tables:
table1
table3
table4
table5
表INFORMATION_SCHEMA.COLUMNS
是包含所有表中的所有列的系統表。您可以通過選擇它來查看它。
對於你的問題,你應該試試這個:
select I.Column_name,
table_name,
table_count
from INFORMATION_SCHEMA.COLUMNS I
inner join
(
Select Column_name,
count(*) as table_count
from INFORMATION_SCHEMA.COLUMNS
group by Column_name) as T on T.Column_name = I.Column_name
你將有一個表,每個列名,表和列table_count
計數。
我ust不知道如何輸出一個列表。你應該把它放在excel然後如果你想格式化我猜..
告訴我,如果你有問題!
查詢下面應該給你想要的結果。如果您遇到任何問題,請告訴我。如果你想具體介紹一下單個數據庫您可以修改腳本
此查詢爲您提供列名 - 串連表名 - 表數這裏
SELECT t.CNAME AS ColumnName, STUFF(
(SELECT ',' + S.TNAME
FROM
(
SELECT C.NAME AS CNAME , T.NAME AS TNAME
FROM SYS.OBJECTS AS T
JOIN SYS.COLUMNS AS C
ON T.OBJECT_ID=C.OBJECT_ID
WHERE T.TYPE_DESC='USER_TABLE'
)s
WHERE s.CNAME = t.CNAME
FOR XML PATH('')),1,1,'') AS TablesUsed,
COUNT(t.TNAME)
FROM
(
SELECT C.NAME AS CNAME , T.NAME AS TNAME
FROM SYS.OBJECTS AS T
JOIN SYS.COLUMNS AS C
ON T.OBJECT_ID=C.OBJECT_ID
WHERE T.TYPE_DESC='USER_TABLE'
)t
GROUP BY t.CNAME
HAVING COUNT(t.TNAME) > 1
ORDER BY COUNT(t.TNAME) DESC
答案很可能是平臺特定。請指定您使用的平臺。 –
我正在使用phpMyAdmin。 只是爲了更清楚一點,我不在尋找任何特定的列,只有任何_columns_可以在2個或更多的表中找到。 –
phpMyAdmin是一個管理MySQL或MariaDB數據庫的應用程序;它不是數據庫平臺本身。可能你正在使用其中之一;您可以看到主phpMyAdmin頁面中的哪一個和版本信息(右側有數據庫服務器,PHP和Web服務器的許多版本信息)。 –