比方說,我需要找到每個動物園中最古老的動物。這是一種典型的最大一類查詢。這只是一個複雜因素:斑馬和長頸鹿被存放在不同的桌子上。爲了讓所有動物的上市,無論是長頸鹿和斑馬,我可以這樣做:子查詢的結果可以與其自身結合嗎?
(SELECT id,zoo,age FROM zebras
UNION ALL
SELECT id,zoo,age FROM giraffes) t1
然後給出t1
,我可以建立一個典型的最大對的一組查詢:
SELECT t1.*
FROM t1
JOIN
(SELECT zoo,max(age) as max_age
FROM t1
GROUP BY zoo) t2
ON (t1.zoo = t2.zoo)
很明顯,我可以將t1
作爲臨時表存儲,但有沒有辦法在一個查詢中完成此操作,而無需重複定義t1
? (請不要討論對錶格設計的修改;我想專注於使用子查詢結果的問題。)
您所查詢的是奇怪的,這是一樣的做 SELECT T1 * FROM T1 因爲T2將包含所有可能的動物園。 t1,你加入t1的動物園與t1本身... – Sebas