解决视图中列 name/type 的建议方法

Suggested way to resolve column name/type in a view

我遇到了以下问题,我正在努力寻找最佳解决方案。假设我有如下视图:

CREATE VIEW myView AS (
    SELECT 
        country_code, 
        other_column,
        COUNT(1) as cnt 
    FROM mytable 
         JOIN otherDatabase.otherTable ON (id)
    GROUP BY 1,2 ORDER BY 1 LIMIT 1
)

解析字段名称和视图类型的最快方法是什么?例如,在上面我希望得到一些类似的东西:

{
    country_code: VARCHAR, 
    other_column: BOOL,
    cnt:          INT
}

解析视图类型的最佳方法是什么?请注意,我已将其标记为 MySQL,但我也想知道是否有更通用的方法来解析类型,或者它是否是非标准的并且需要在每个数据库的基础上完成更多工作?


Update:我相信正确的答案只是 运行 a DESCRIBE myView,这会给我不带 [= 的列名和类型35=]正在查询?

至少在 MySQL 的当前版本中,INFORMATION_SCHEMA.COLUMNS 包含视图和基表的元数据:

mysql> create table mytable (id serial primary key, x int);
Query OK, 0 rows affected (0.01 sec)

mysql> create view v as select * from mytable;

mysql> select column_name, data_type from information_schema.columns where table_name='v';
+-------------+-----------+
| COLUMN_NAME | DATA_TYPE |
+-------------+-----------+
| id          | bigint    |
| x           | int       |
+-------------+-----------+

相关问题...

SHOW CREATE TABLE myView;

SHOW CREATE VIEW myView;

将完全限定所有列。

(编写 JOIN 时,始终限定列名是明智的。)