SQLite:嵌套 SELECT 语句的替代查询

SQLite: Alternative Query for Nested SELECT Statements

以下是两个表的相关列:

DataSources
-----------
Column: DataSourceID --> Primary Key

TimeSteps
-----------
Column: TimeStepID   --> PrimaryKey
Column: Date         --> (of the form YYYY-MM-DD)
Column: DataSourceID --> Foreign Key

我可以对多个数据源使用相同的 Date,但使用不同的 TimeStepID我想查找哪些数据源共享一个日期,只给出一个 TimeStepID。

我提出的有效查询如下:

SELECT DISTINCT ds.DataSourceID FROM DataSources ds
JOIN TimeSteps AS ts USING(DataSourceID)
WHERE ts.TimeStepID IN
   (SELECT TimeStepID FROM TimeSteps WHERE Date IN
      (SELECT Date FROM TimeSteps WHERE TimeStepID = ?))

有没有办法在没有嵌套 SELECT 语句的情况下简化此查询?

如果您在结果中想要的是 DataSourceID,则无需连接到 DataSources
另外,查询:

SELECT Date FROM TimeSteps WHERE TimeStepID = ?

returns只有1行1列,所以不需要运算符IN.

试试这个:

SELECT DISTINCT DataSourceID 
FROM TimeSteps
WHERE Date = (SELECT Date FROM TimeSteps WHERE TimeStepID = ?);

如果DataSourceIDDate的组合是唯一的,则不需要DISTINCT