以下是兩個表的相關列:
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 陳述句的情況下簡化此查詢?
uj5u.com熱心網友回復:
如果您想要的結果是DataSourceIDs,則不需要連接到DataSources。
此外,查詢:
SELECT Date FROM TimeSteps WHERE TimeStepID = ?
僅回傳 1 行和 1 列,因此不需要 operator IN。
嘗試這個:
SELECT DISTINCT DataSourceID
FROM TimeSteps
WHERE Date = (SELECT Date FROM TimeSteps WHERE TimeStepID = ?);
如果組合DataSourceID和Date是唯一的,則DISTINCT不需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360106.html
