sql - 使用 SELECT 结果作为父 SELECT 的列名
问题描述
我有一个 TMP_FOO 表,它具有与 FOO 相同的列以及更多列。我需要将 TMP_FOO 中的所有行插入 FOO。我可以写以下内容:
INSERT INTO FOO (SELECT bar, baz FROM TMP_FOO);
但我需要它是通用的,以便我只更改表的名称。我最好的尝试:
INSERT INTO FOO
(SELECT
(SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'FOO')
FROM
f2020.TMP_FOO)
哪个不起作用,因为
SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'FOO'
返回多行。我可以用纯 SQL 归档我想要的内容(无需动态构建查询字符串)吗?
解决方案
我可以用纯 SQL 归档我想要的内容(无需动态构建查询字符串)吗?
不。
在纯 SQL 中,您无法从另一个查询生成输出列的列表。数据库在解析查询时(即在查询实际执行之前)需要知道查询将返回哪些列。
推荐阅读
- javascript - 如何在 Javascript 中通过用户操作使反馈消失?
- .net - AWS lTelerik.Web.UI.WebResource.axd?type=rau HTTP/1.1" 404 196?
- excel - 用 awk 实现类似 Excel-vlookup 的函数
- python - python中是否有一种方法可以访问Windows中名为“网络连接”的IP地址?例如:“以太网”或“本地连接”
- amazon-web-services - 我们可以根据请求标头添加 CloudFront 行为吗?
- awk - 如何找到部分字符串的匹配项,然后使用 awk 从参考文件中删除该字符串?
- javascript - 将 String 转换为 JSON 并在 Node.js 中美化它
- angular - 如何使用 d3.js 和 Angular 在力有向图中显示边缘?
- html - 单击表格单元格时弹出包含 Textarea 的 div
- vimeo-ios - 使用 vimeo/PlayerKit 显示 Close Caption 控件