我有点新手到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 –