2016-12-27 125 views
0

我有我在網絡上發現,如果它的工作正確那就完美了下面的SQL查詢,但它不是秉承where子句。Where子句不遵守

SELECT * 
FROM Chicken AS a, 
    (SELECT MIN(Temp) AS mini, MAX(Temp) AS maxi 
     FROM Chicken 
    ) AS m 
WHERE m.maxi = a.Temp AND `Location` = "Outside" OR m.mini = a.Temp AND `Location` = "Outside" 
ORDER BY `a`.`Time` DESC Limit 1 

發生的事情是,無論位置如何,它都會採用最低和最高溫度。我需要它找到「外部」位置的最低和最高溫度。

任何人都可以幫忙嗎?

+0

這樣就把'WHERE'子句中的子查詢。 –

+3

不要在沒有括號的情況下混合使用AND和OR。 – aynber

+0

您能否提供一些示例數據和您試圖實現的結果(以及與實際使用此查詢獲得的輸出有何不同)? – Mureinik

回答

0
SELECT * 
FROM Chicken AS a, 
    (SELECT MIN(Temp) AS mini, MAX(Temp) AS maxi 
     FROM Chicken 
    ) AS m 
WHERE (m.maxi = a.Temp AND `Location` = "Outside") OR (m.mini = a.Temp AND `Location` = "Outside") 
ORDER BY `a`.`Time` DESC Limit 1 

試試這可能是它的作品給你。

+0

感謝查詢,但具有相同的問題,因爲原來的查詢,它選擇最低和最高溫度而不管位置如何。 –