我的mysql表是:
Id | value | count_of_past_lower_values
1 | 120 | 0
2 | 210 | 1
3 |150 | 1
4 |140 | 1
5 |200 | 3
鉴于id和值,我必须更新第3列。我使用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