MySQL中无需编码实现基于查询结果的动态列查询?是否需用存储过程?
问题描述
我有如下第一个查询语句:
SELECT category, name FROM table_1;
执行后得到唯一结果:
category name ------------------------------- gardener example
我需要使用上述结果中的gardener和example作为列,执行第二个查询:
SELECT gardener, example FROM table_2;
请问能否无需编写代码实现这一操作?是否需要使用存储过程?
解答
- 手动操作无需代码:如果是人工分步执行,完全可以不用写代码——先跑第一个查询拿到结果,再手动把
gardener和example填入第二个查询语句执行即可。但如果要自动完成整个流程,纯静态SQL做不到,因为SQL无法直接将查询结果作为列名动态代入后续语句。 - 存储过程不是唯一选项:存储过程可以实现这个需求,通过在存储过程里查询
table_1获取列名,再拼接动态SQL执行。但也可以不用存储过程,很多数据库支持直接执行动态SQL,比如MySQL的PREPARE+EXECUTE、PostgreSQL的EXECUTE语句,单条动态SQL就能完成这个逻辑。
内容的提问来源于stack exchange,提问作者ArthurArmand
相关产品推荐
相关产品推荐

