這裏是我當前的查詢:在查詢中出現太多問題,或者這是猶太教嗎?
SELECT * FROM (
SELECT * FROM feesbydate
LEFT JOIN (
SELECT MAX(from_date) as the_date FROM (
SELECT a.* FROM feesbydate a, feesbydate b
WHERE a.exchFee_ID = 15 AND b.exchFee_ID = 15
AND a.from_date <= b.from_date
AND a.id <> b.id AND b.id = 62
GROUP BY a.id
) a) b on from_date < the_date
WHERE exchFee_ID = 15) c
WHERE not(isnull(the_date));
基本上我有具有以下的表:
ID | exch_feeID | from_date | to_date |其他不相關的列
我希望得到的是有一個from_date
是之前一定id
(在上面62
的例子),並與所有的記錄一定exchFee_ID
(在上面15
的例子)。
上面的查詢工作。但隨着桌子的增長,這可能不是最理想的。有沒有更高效或高效的方法來做到這一點?
您的查詢有一個額外的記錄,我的**沒有**,爲什麼? – Neal
哪一個會是?請發佈其記錄集。 – aefxx
哦,我明白了。在你最內層的JOIN中,你選擇了具有'62'以外的'id'的行的最大'from_date'。然後在外部範圍中,您明確地使用'... b on_date
aefxx