我正在创建一个实用程序,允许用户输入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中执行此操作?
答案 0 :(得分:3)
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”; “表”, “类型”, “possible_keys”; “键”, “key_len”; “REF”, “行” 的 “额外”强> <登记/> “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可以使用它。
答案 1 :(得分:1)
我认为您需要查看resultsetmetadata。我带有列数,列名和一些关于结果集的内容。
答案 2 :(得分:0)
我认为您正在寻找DESC {table_name}