You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何动态生成SQL从4个CA_*_APPLE表查询对应ID列及指定列?

需求可行性及实现方案

这个需求完全可行,只需利用表名的命名规则直接拼接出对应ID列名即可——你的ID列是表名+_ID的格式,刚好可以复用TABLE_NAME字段构造ID列的引用。

原实现代码

Select ' Select AMOUT,RETAIL'+
           ' from '+TABLE_SCHEMA+'.'+ table_name +
         ' Union All'
From INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE  'CA_%_APPLE';

原生成结果

Select AMOUT,RETAIL from data.CA_2003_CA_APPLE Union All
 Select AMOUT,RETAIL from data.CA_2004_CA_APPLE Union All
 Select AMOUT,RETAIL from data.CA_2005_CA_APPLE Union All
 Select AMOUT,RETAIL from data.CA_2006_CA_APPLE Union All

修改后的实现代码

在SELECT列表中添加table_name + '_ID'即可生成对应ID列的引用:

Select ' Select '+ table_name + '_ID, AMOUT,RETAIL'+
           ' from '+TABLE_SCHEMA+'.'+ table_name +
         ' Union All'
From INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE  'CA_%_APPLE';

生成的目标结果

执行修改后的语句后,就能得到你期望的包含对应ID列的联合查询:

Select CA_2003_CA_APPLE_ID,AMOUT,RETAIL from data.CA_2003_CA_APPLE Union All
 Select CA_2004_CA_APPLE_ID,AMOUT,RETAIL from data.CA_2004_CA_APPLE Union All
 Select CA_2005_CA_APPLE_ID,AMOUT,RETAIL from data.CA_2005_CA_APPLE Union All
 Select CA_2006_CA_APPLE_ID,AMOUT,RETAIL from data.CA_2006_CA_APPLE Union All

补充说明

如果ID列命名规则有变动,或者需要严谨验证列的存在性,可以关联INFORMATION_SCHEMA.COLUMNS表筛选每个表的ID列,但根据你描述的规则,直接拼接表名的方式已经足够简洁可靠。

内容的提问来源于stack exchange,提问作者Novice_Techie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:59:53