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

SQL Server如何批量查询Prod架构下含mytime表的时间最大值

实现方案

你可以通过SQL Server的动态SQL拼接查询语句,批量执行后得到汇总结果,代码如下:

DECLARE @sql NVARCHAR(MAX) = N''

-- 拼接所有符合条件表的最大值查询,用UNION ALL合并结果
SELECT @sql += N'UNION ALL 
SELECT ''' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + N''' AS table_name,
MAX(mytime) AS max_mytime
FROM ' + QUOTENAME(s.name) + N'.' + QUOTENAME(t.name) + N'
'
FROM sys.tables t
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN sys.columns c ON c.object_id = t.object_id
WHERE s.name = 'Prod' AND c.name = 'mytime'

-- 移除开头多余的UNION ALL关键字
SET @sql = STUFF(@sql, 1, 10, N'')

-- 执行拼接好的动态SQL
EXEC sp_executesql @sql

说明

  • 代码直接复用了你原本的系统表筛选逻辑,不需要额外依赖之前写的CTE
  • 用QUOTENAME包裹架构名、表名,避免表名/架构名包含特殊字符、关键字时出现语法错误
  • 如果需要后续使用查询结果,可以在动态SQL的第一个SELECT后增加INTO #temp_result,执行完成后查询#temp_result临时表即可
  • 若某张表没有数据,对应的max_mytime会返回NULL,符合默认的聚合函数行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:27:03