gpt4 book ai didi

mysql - 如何只获取给定 mysql 查询的列名?

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:22 24 4
gpt4 key购买 nike

我正在创建一个实用程序,它允许用户输入 SQL 查询以将数据导入我的数据库。

第一步是显示结果字段列表,以便用户可以将它们路由到目标字段。

当用户从 MSSQL 导入时,我可以使用 SET FMTONLY ON 来获取查询在运行时会产生的输出列的列表(假设查询首先是有效的)。

我还没有找到一种方法来为 MySQL 执行此操作。 EXPLAIN 没有列出结果字段。


给定以下查询:

SELECT CONCATENATE(first_name, " ", last_name) AS name, age, foo
FROM customers
ORDER BY name ASC;

我最终只需要获取输出字段列表,如下所示:

{ "name", "age", "foo" }

我如何在 MySQL 中执行此操作?

最佳答案

SET FMTONLY ON 仍然需要您手动获取列名和类型,它只会生成一个空结果集。

对于MySQL,在某处添加一个WHERE FALSE

SELECT CONCATENATE(first_name, " ", last_name) AS name, age, foo
FROM customers
WHERE FALSE
ORDER BY name ASC;

你得到了这个可爱的执行计划

"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1";"SIMPLE";NULL;NULL;NULL;NULL;NULL;NULL;NULL;"Impossible WHERE"

然后像使用 MSSQL set fmtonly on 一样解析列


对于复杂查询(嵌套、分组、限制),将其包装在子查询中

select * from (
<your wonderful brilliant complex query>
) x where false

如果内部查询包含没有 TOP 的 ORDER BY,MSSQL 会提示,MySQL 可以接受。

关于mysql - 如何只获取给定 mysql 查询的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5439020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com