2014-01-21 41 views
0

我有一個mysql查詢的問題。我有一個ID(自動增量),用戶ID,值和時間(秒)的表。現在,我想每個用戶的兩個最低值之差,但不知道該怎麼做:(爲每個用戶選擇兩個最新行以獲得列的差異(MySQL)

我下面的表格有:

id | uid | myvalue | thetime 
-----+-------+---------+----------- 
13 | 1 | 120 | 1389287800 
14 | 2 | 100 | 1389287810 
15 | 3 | 110 | 1389287820 
16 | 2 | 80 | 1389287830 
17 | 4 | 100 | 1389287840 
18 | 1 | 110 | 1389287850 
19 | 3 | 105 | 1389287860 
20 | 1 | 100 | 1389287870 

我想有以下結果:

uid | difference  --> Order by difference 
-----+------------ 
2 |  20 
1 |  10 
3 |  5 

這將是巨大的,如果有人出來幫我謝謝是一個很大!

+0

什麼是你寫的Sql到現在你可以執行arithemtic操作是否正確? –

+0

已經寫了幾十個querys,但沒有一個顯示結果。最新示例:SELECT *,t1.myvalue - t2.myvalue AS差異FROM表t1 INNER JOIN表t2 t1.myvalue> t2.myvalue AND t1.uid = t2.uid GROUP BY t1.uid ORDER BY t2.myvalue DESC, t2.thetime DESC – trpx

回答

0

你要改善這一點,但是這基本上是你如何做到這一點,你可以使用。一個自我加入

SELECT uid, MAX(myvalue)-MIN(myvalue) AS diff FROM 
    (SELECT a.* FROM tablename AS a 
     LEFT JOIN tablename AS a2 
      ON a.uid=a2.uid AND a.myvalue<=a2.myvalue 
     GROUP BY uid,myvalue 
     HAVING COUNT(*)<=2 
    ) a 
GROUP BY uid 
+0

我在做同樣的事情:)這裏是一個鏈接玩上面的查詢:http://sqlfiddle.com/#!2/15eba/28 – aconrad

+0

是的男人!你釘了它!而我太盲目了。謝謝你的幫助! – trpx

+0

很高興聽到它的幫助。 – bansi

相關問題