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

SQLite3如何合并多查询批量获取各表有效数据的首尾时间

实现方案

SQLite不支持直接在查询中动态使用表名,你可以通过先生成联合查询语句再执行的方式实现需求,全程只需两次SQL执行,150张表的场景下性能优异:

步骤1:生成最终查询语句

运行以下SQL,会自动拼接所有业务表的查询逻辑:

SELECT GROUP_CONCAT(
  'SELECT ''' || name || ''' AS "Table", MIN(Date) AS "First", MAX(Date) AS "Last" FROM "' || name || '" WHERE Value IS NOT NULL',
  ' UNION ALL '
) AS final_query
FROM sqlite_schema
WHERE type = 'table' AND name NOT LIKE 'sqlite_%';

步骤2:执行生成的查询语句

把步骤1返回的final_query结果复制出来直接运行,就能得到你要的包含Table/First/Last三列的结果表。


方案说明

  1. 这里直接用MIN(Date)/MAX(Date)聚合函数替代你原有的ORDER BY + LIMIT写法,配合你已经创建的Date字段索引,查询效率更高,无需全表排序就能直接拿到极值。
  2. 生成的查询逻辑会自动为每个表单独统计有效数据的日期范围,通过UNION ALL把所有表的结果汇总到一起。
  3. SQLite默认GROUP_CONCAT最大长度为1000000,150张表的拼接完全不会触发长度限制,无需额外调整参数。

生成的查询示例

你最终执行的SQL大概结构如下:

SELECT 'MY_FIRST_TABLE' AS "Table", MIN(Date) AS "First", MAX(Date) AS "Last" FROM "MY_FIRST_TABLE" WHERE Value IS NOT NULL
UNION ALL
SELECT 'SECOND_TABLE_NAME' AS "Table", MIN(Date) AS "First", MAX(Date) AS "Last" FROM "SECOND_TABLE_NAME" WHERE Value IS NOT NULL
UNION ALL
-- 其余表的查询逻辑自动拼接在此处

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:45:03