mySQL,从information_schema中选择BOTH table_rows和column_name

时间:2016-10-23 16:56:38

标签: mysql sql

我被要求创建一个从db中列出TABLE_NAME,TABLE_ROWS,COLUMN_NAME和DATA_TYPE的程序。

问题是,我只能使用INFORMATION_SCHEMA.COLUMNS选择column_name,我可以使用INFORMATION_SCHEMA.table选择table_rows。我试图加入这两个但没有成功。

另外,我需要使用CHARACTER_MAXIMUM_LENGTH>过滤VARCHAR列。五 ,但如果我去“WHERE CHARACTER_MAXIMUM_LENGTH> 5”,它不仅会获得varchar,还会获得char data_types。

修改 这是我到目前为止所拥有的

SELECT c.table_name,  c.column_name, c.data_type, t.table_rows, CHARACTER_MAXIMUM_LENGTH
   FROM information_schema.columns c
   JOIN information_schema.tables t ON c.table_name = t.table_name
   WHERE t.table_schema = 'SAMPLE' AND CHARACTER_MAXIMUM_LENGTH > 5;

我认为我有正确的联接工作,但我仍然不确定如何将“CHARACTER_MAXIMUN_LENGHT> 5”仅过滤varchar数据类型......

有什么想法?

1 个答案:

答案 0 :(得分:1)

从您的条件中排除除varchar以外的所有数据类型:

AND (CHARACTER_MAXIMUM_LENGTH > 5 OR DATA_TYPE <> 'varchar')