我有點新手到SQL,但一直在使用SQLFiddle玩弄它,以獲得更好的。如果您想查找並列出所有具有在不同表格中共享的列或列的表格(例如,表格1,2,3,& 4有一個客戶字段,而表格2 & 4有一個學生字段? ?你會如何做,與MySQL假設你有100多個表,而不是2列出共享相同的確切列名的所有表
如
Table 1:
ID | Customer | Pet |
Table 2:
ID | Customer | Food | Student |
Table 3:
ID | Customer | Activity |
Table 4:
ID | Customer | Cost | Student
預期的結果:
Table_NAME | COLUMN_NAME
Table 1, Table 2, Table 3, Table 4 | ID
Table 1, Table 2, Table 3, Table 4 | CUSTOMER
Table 2, Table 4 | Student
我都嘗試下面並沒有給我什麼,我一直在尋找:
select Table_NAME, COLUMN_NAME, Count(*)
from INFORMATION_SCHEMA.columns
GROUP BY Table_NAME
HAVING COUNT(*) > 1
SELECT Table_Name, Column_Name
FROM INFORMATION_SCHEMA.columns
WHERE TABLE_NAME IN
( SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.columns
GROUP BY TABLE_NAME
HAVING COUNT(*) > 1
)
ORDER BY TABLE_NAME
如果你是新的SQL,來這裏的一般GROUP BY規則:如果指定了GROUP BY子句,在SELECT列表中的每個列引用必須要麼確定分組列或者是一組函數的參數。 (MySQL在這裏做的事情不同......) – jarlh
@jarlh對於MySql,它實際上取決於mysql版本。在5.3.4之前(不確定是否這是一個)雖然它允許你做一個沒有完整列的選擇(我總是認爲這是一團糟)看到這個答案:http://stackoverflow.com/a/1646121/460557 –