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

如何在Snowflake中从INFORMATION_SCHEMA.TABLES查询指定表的特定列值?

跨多结构相同表查询指定条件数据并关联表名

静态拼接法(适合表数量少且固定的场景)

如果目标表数量不多,直接用UNION ALL拼接各表查询结果即可,每个查询手动指定表名:

SELECT 'TABLE1' AS table_name, val
FROM TABLE1
WHERE common_column = 'this_value'
UNION ALL
SELECT 'TABLE2' AS table_name, val
FROM TABLE2
WHERE common_column = 'this_value'
UNION ALL
SELECT 'TABLE3' AS table_name, val
FROM TABLE3
WHERE common_column = 'this_value';

这种方法简单直观,无需复杂逻辑,但后续新增同结构表时,需要手动修改SQL。

动态SQL法(适合表数量多或可能新增的场景)

如果表数量多或会动态新增,用动态SQL自动生成查询语句更高效,不同数据库写法略有差异:

MySQL 实现

SET @sql = NULL;

-- 拼接所有目标表的查询语句
SELECT GROUP_CONCAT(
    CONCAT(
        'SELECT ''', table_name, ''' AS table_name, val FROM ', table_name, ' WHERE common_column = ''this_value'''
    ) SEPARATOR ' UNION ALL '
) INTO @sql
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name IN ('TABLE1', 'TABLE2', 'TABLE3'); -- 可改为table_name LIKE 'TABLE%'匹配前缀表

-- 执行动态SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SQL Server 实现

DECLARE @sql NVARCHAR(MAX);

SELECT @sql = STRING_AGG(
    CONCAT(
        'SELECT ''', TABLE_NAME, ''' AS table_name, val FROM ', TABLE_NAME, ' WHERE common_column = ''this_value'''
    ), ' UNION ALL '
)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN ('TABLE1', 'TABLE2', 'TABLE3');

EXEC sp_executesql @sql;

PostgreSQL 实现

DO $$
DECLARE
    rec RECORD;
    sql TEXT := '';
BEGIN
    -- 遍历目标表,拼接查询语句
    FOR rec IN SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name IN ('TABLE1', 'TABLE2', 'TABLE3') LOOP
        sql := sql || format('SELECT ''%I'' AS table_name, val FROM %I WHERE common_column = %L UNION ALL ', rec.table_name, rec.table_name, 'this_value');
    END LOOP;
    -- 移除末尾多余的UNION ALL
    sql := LEFT(sql, LENGTH(sql) - LENGTH(' UNION ALL '));
    -- 执行动态SQL
    EXECUTE sql;
END $$;

注意事项

  • 动态SQL从INFORMATION_SCHEMA.TABLES读取表名,避免了SQL注入风险;若使用用户输入的表名,需做转义处理。
  • 所有目标表必须结构一致(均包含common_column和val字段),否则执行会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:20