2011-11-12 11 views
4

私は、次の行IDとともにMAX値とMIN値を取得しますか?

 
ID | temp_hi | temp_lo 
------------------------ 
    0 | 72 | 38 
------------------------ 
    1 | 56 | 33 
------------------------ 
    2 | 67 | 28 

のような表を持っているがMAX(temp_hi)と、それのIDを取得し、MIN(temp_lo)を取得するために、単一のSQLステートメントでの方法はありますし、それはIDですか?したがって、この場合、それは次のようになります。

(temp_hi id) 0, (temp_hi) 72, (temp_lo id) 2, (temp_low) 28 
+0

? – stivlo

+0

これは、両方の結果に同じIDを与えます。 – dstahc

答えて

5

あなたは、サブクエリを使用することができます。

SELECT * FROM data 
WHERE temp_hi = (SELECT MAX(temp_hi) FROM data) 
OR temp_lo = (SELECT MIN(temp_lo) FROM data); 
+1

それはあまりにも悪くありませんでした。ただ問題は、正しい値を見つけるために結果を釣り上げなければならないことです。 – dstahc

+0

@dstahc次に私のクエリを見て、それは4つの値を期待どおりに提供します。 – stivlo

3

ありmaxと最小温度とのIDよりも、私はちょうど選ぶことができ1:

それをしようとする
SELECT 
    (SELECT ID FROM temp ORDER BY temp_hi DESC LIMIT 1) AS max_temp_id, 
    MAX(temp_hi) AS max_temp, 
    (SELECT ID FROM temp ORDER BY temp_lo LIMIT 1) AS min_temp_id, 
    MIN(temp_lo) AS min_temp 
FROM temp 

テストデータ:

CREATE TABLE IF NOT EXISTS `temp` (
    `ID` int(11) NOT NULL, 
    `temp_hi` int(11) NOT NULL, 
    `temp_lo` int(11) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


INSERT INTO `temp` (`ID`, `temp_hi`, `temp_lo`) VALUES 
(0, 72, 38), 
(1, 56, 33), 
(2, 67, 28); 

結果:最大値を持つ複数の行があるものならば

query results

関連する問題