我想从查询中查询列名,如下所示:
SHOW COLUMNS FROM
(SELECT `f1`, `f2`, `g1`, `g3` FROM `f` INNER JOIN `g` ON `g`.`Id` = `f`.`Id`)
结果是
FIELD
f1
f2
g1
g3
当然这个查询是错误的。但有没有办法做到这一点?
答案 0 :(得分:2)
你为什么需要这个?
如果要在过程或类似过程中使用它,则表示您已在列名称中键入。如果它是动态生成的查询,请使用生成查询的方法来获取列名。
如果要在程序中使用它们,大多数语言都提供了获取结果集列信息的功能。
PHP中的 PDOStatement::getColumnMeta ( int $column )
与PDO
.NET中的OdbcDataReader.GetSchemaTable()
此解决方案是黑客攻击!(不推荐也未经过测试,只是一个建议!)
根据查询(SELECT .... INTO #temptable
)创建一个临时表(可能带有一个永远不会变为true的where子句(WHERE 0=1
),然后从INFORMATION_SCHEMA.COLUMNS查询临时表元数据