2016-12-27 82 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

感谢查询,但具有相同的问题,因为原来的查询,它选择最低和最高温度而不管位置如何。 –