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

SQLite嵌套SELECT替代查询:按单TimeStepID查询共享日期的数据源

简化方案

你完全可以用TimeSteps表自关联实现需求,不需要任何嵌套SELECT语句,简化后的查询如下:

SELECT DISTINCT ts2.DataSourceID
FROM TimeSteps ts1
INNER JOIN TimeSteps ts2 
    ON ts1.Date = ts2.Date
WHERE ts1.TimeStepID = ?

逻辑说明

  1. 先通过WHERE ts1.TimeStepID = ?定位到你给定的时间步对应行,拿到该行的Date值
  2. 通过自关联匹配出所有Date和该值相等的TimeSteps行
  3. 直接去重取这些行的DataSourceID即可,不需要额外关联DataSources表(因为TimeSteps里的DataSourceID是外键,和DataSources的主键是一一对应的)

如果你的场景需要严格校验DataSourceID必须在DataSources表中存在,可以加上关联逻辑,依然不需要嵌套子查询:

SELECT DISTINCT ds.DataSourceID
FROM TimeSteps ts1
INNER JOIN TimeSteps ts2 
    ON ts1.Date = ts2.Date
INNER JOIN DataSources ds 
    ON ts2.DataSourceID = ds.DataSourceID
WHERE ts1.TimeStepID = ?

这个方案比你原来的两层嵌套子查询执行效率更高,逻辑可读性也更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:27:05