2016-09-10 6 views
-1

私のmysqlのテーブルがある取得:値を持つ行の数より少ない現在の行の値よりも

idと値が与えられ
Id | value | count_of_past_lower_values 
1 | 120 | 0 
2 | 210 | 1 
3 |150  | 1 
4 |140  | 1 
5 |200  | 3 

、私は第三COLを更新する必要があります。私はSUM(IF(value<X,1,0))を使用してクエリを作らなく、条件付き合計と自己左の参加を発行X.

+0

試してみる? –

答えて

2

のための右の発現を同定することが十分であろう:

select 
    a.id, 
    a.value, 
    sum(case when a.value > b.value then 1 else 0 end) as count_of_past_lower_values 
from yourtable a 
left join yourtable b on a.id > b.id 
group by a.id, a.value 
order by a.id 

結果

あなたがやった
id | value | count_of_past_lower_values 
----+-------+---------------------------- 
    1 | 120 |       0 
    2 | 210 |       1 
    3 | 150 |       1 
    4 | 140 |       1 
    5 | 200 |       3 
関連する問題