我编写了一个非常难看的SQL查询,说实话我在这里发布它很尴尬......但是我需要一些关于4个SELECT语句的帮助。如果没有创建该表,有没有更好的方法呢?
我不确定巨大的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个连接)t
WHERE t.Time=4) AS t2
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的选择在这里有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
( 巨大的选择在这里有3个连接)t
WHERE t.Time=3) AS t1
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的选择在这里有3个连接)t
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 Id,EntryNo;
答案 0 :(得分:2)
应该可以将其简化为:
SELECT t1.ID, t1.SubID, t1.Time, t1.Value, t1.value2, t1.value FROM
(HUGE SELECT HERE WITH 3 join)t1
LEFT JOIN
(HUGE SELECT HERE WITH 3 join)t2
ON ( t2.Id = t1.Id AND t1.Time <> t2.Time and T2.Time in (3,4) )
WHERE T1.Time in (3,4) and
(t2.value<>t1.value OR t2.value2<>t1.value2 OR t2.Id Is Null)