获取值小于当前行值的行数

时间:2016-09-10 22:45:07

标签: mysql

我的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的正确表达式。

1 个答案:

答案 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