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

如何从#LukaTestTable记录的表中获取GUID列值并生成结果表?

获取临时表中所有表的GUID列值并关联表名

当然可以实现这个需求!由于临时表#LukaTestTable中存储的是带GUID列的表名,我们需要用动态SQL来遍历这些表,逐一查询它们的GUID列并关联对应的表名,最终合并成包含TABLE_NAME和GUID_VALUE的结果集。

具体实现代码

-- 声明变量存储动态生成的SQL语句
DECLARE @DynamicSQL NVARCHAR(MAX) = N''

-- 遍历临时表,为每个表拼接查询语句
SELECT @DynamicSQL += 
    N'SELECT TABLE_NAME = ''' + QUOTENAME(table_name) + N''', GUID_VALUE = GUID FROM ' + QUOTENAME(table_name) + N' UNION ALL '
FROM #LukaTestTable

-- 移除末尾多余的"UNION ALL"
SET @DynamicSQL = LEFT(@DynamicSQL, LEN(@DynamicSQL) - 10)

-- 执行动态SQL
EXEC sp_executesql @DynamicSQL

代码说明

  1. 动态SQL拼接:通过遍历#LukaTestTable中的每个表名,为每个表生成一条独立的SELECT语句,明确指定TABLE_NAME为当前表的名称(用QUOTENAME()包裹表名,避免表名含特殊字符或关键字导致语法错误),GUID_VALUE为该表GUID列的值。
  2. 合并查询结果:所有表的查询语句用UNION ALL连接,保证结果保留所有行(包括重复表名的查询结果,若需去重可替换为UNION,但会牺牲性能)。
  3. 执行动态SQL:使用sp_executesql执行拼接好的SQL语句,输出最终结果。

可选优化

如果需要过滤掉GUID列的空值,可以在每个SELECT语句后添加WHERE GUID IS NOT NULL,修改后的拼接逻辑如下:

SELECT @DynamicSQL += 
    N'SELECT TABLE_NAME = ''' + QUOTENAME(table_name) + N''', GUID_VALUE = GUID FROM ' + QUOTENAME(table_name) + N' WHERE GUID IS NOT NULL UNION ALL '
FROM #LukaTestTable

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:55:04