2010-03-23 77 views
0
SELECT h11, HA11 
FROM florin.h11 
WHERE (3>d1 AND 3<d2) OR (3>d1 AND 3=d2 AND id=MAX(id)) 
UNION (3=d1 AND 3<d2 AND id=MIN(id)); 

這裏我表stucture的截圖: alt text如何通過聚合函數過濾MySQL SELECT?

+12

有超過一件事不對您的查詢。你不能像使用MAX那樣使用'MAX',而且如果沒有另一個'SELECT',你就不能使用'UNION'。請編輯您的問題以準確描述您希望查詢生成的內容。 –

+1

你想實現什麼?你的預期產出是多少? – geffchang

+3

'3> d1 AND 3 3' –

回答

0

一是錯誤的事情是

  • 請註明如果林是數據庫和H11的表。

如果林是表,然後只寫「選擇H11,HA11從林」,不寫列名。

二錯誤的事情是

  • 聯盟運算符用於連接兩個查詢的結果。欲瞭解更多信息衝浪www.w3school.com

所以,火查詢像

select h11, HA11 
from florin 
where (3 > d1 and 3 < d2) or (3 > d1 and 3 = d2 and id = MAX(id)) 

union 

select h11, HA11 
from florin 
where (3 = d1 and 3 < d2 and id = MIN(id)) 

這裏可以此查詢不返回預期的結果,但是這是我的想象,你想這種類型的查詢。

+0

錯誤的第三件事是你可能想要使用max(id)的子查詢,但是我不知道你的目標是什麼。 – MJB

1

我想你會喜歡做的是這樣的:

SELECT h11, HA11 
FROM florin.h11 
WHERE (3>d1 AND 3<d2) 
    OR (3>d1 AND 3=d2 AND id = (SELECT MAX(t2.id) 
           FROM florin.h11 AS t2)) 
    OR (3=d1 AND 3<d2 AND id = (SELECT MIN(t3.id) 
           FROM florin.h11 AS t3)); 
+0

爲什麼您使用'UNION'而不是另一個'OR'? –

+0

因爲在原始查詢中有一個聯合,但它沒有多大意義,現在我仔細看看... – Whakkee

+0

我刪除了聯合,並將其更改爲或 – Whakkee