【问题标题】:mySQL, select BOTH table_rows AND column_name from information_schemamySQL,从 information_schema 中选择 BOTH table_rows AND column_name
【发布时间】:2017-03-05 11:06:18
【问题描述】:

我被要求创建一个程序,列出数据库中的 TABLE_NAME、TABLE_ROWS、COLUMN_NAME 和 DATA_TYPE。

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

另外,我需要过滤 CHARACTER_MAXIMUM_LENGTH > 5 的 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 数据类型...

有什么想法吗?

【问题讨论】:

  • “我尝试加入两者但没有成功” - 请显示无效的查询。
  • 完成了,对不起,伙计。编辑了问题

标签: mysql sql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多