1
我寫了一個非常難看的SQL查詢,老實說,我很尷尬地發佈它在這裏......但我需要一些關於4個SELECT語句的幫助。有沒有更好的方式來做到這一點,而不創建該表?SQL查詢 - 需要改進
我不確定巨大的SELECT的內容是否與回答這個問題有關。如果是這樣,我會盡量把這個查詢。 (但是因爲我高度簡化了整個例子,所以可能很難做到)。
任何幫助,非常感謝。
(這個問題是一個跟進到另一個問題,我曾在這裏問:Comparing "Consecutive" Rows in Ms Access)
SELECT t2.* FROM
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大這裏選擇用3加入)筆
WHERE t.Time=4) AS t2
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的SELECT這裏有3個連接)t
WHERE t.Time=3) AS t1
ON t2.Id = t1.Id
WHERE t2.value<>t1.value
OR t2.value2<>t1.value2
OR t1.Id Is Null
UNION ALL
SELECT t1.* FROM
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( HUGE在這裏選擇用3聯接)噸
WHERE t.Time=3) AS t1
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( HUGE在這裏選擇用3聯接)噸
WHERE t.Time=4) AS t2
ON t1.Id=t2.Id
WHERE t1.value<>t2.value
OR t1.value2<>t2.value2
OR t2.Id Is Null
ORDER BY標識,EntryNo;
感謝您的回答。那麼真的沒有辦法只寫一次「有3個連接的巨大選擇」? – taranaki 2012-04-03 17:22:03
@taranaki :(不知道我以前是怎麼錯過這個評論的。)不是在MS Access中(據我所知) - SQL的其他方言(包括SQLServer)有一些稱爲Common Table Expressions(CTE)的東西,但它們不可用訪問。 – 2012-04-10 10:19:46
嗨,沒問題。很高興你現在看到它:)。那麼,兩個選擇仍然比4更好:)所以非常感謝你的幫助。 – taranaki 2012-04-11 12:50:22