Mysql,Check字段值的变化?

时间:2013-11-29 05:06:52

标签: mysql sql

Mysql,检查字段值的变化?如果更改值,则显示不同的值

表:a

   id  size  name
   --------------
   1   500   abc
   2   200   bcd
   3   400   xyz
   4   500   bbb
   5   200   aaa


  select @s:=@s+1 as index, id, size, name from a,(SELECT @s:= 0) AS s order by size;

在此查询数据中,如。

   index id  size  name
   --------------------

   1     2   200   bcd
   2     5   200   aaa
   3     3   400   xyz
   4     1   500   abc
   5     4   500   bbb

我需要在尺寸变化时获得索引更改。 我想得到这种类型的数据。等。

   index id  size  name
   --------------------

   1     2   200   bcd
   1     5   200   aaa
   2     3   400   xyz
   3     1   500   abc
   3     4   500   bbb

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

SELECT
  @s := @s + (@prev_size != a.size) `index`,
  id,
  @prev_size := a.size size,
  name
FROM a, (SELECT @s := 0, @prev_size := -1) s
ORDER BY a.size

输出:

| INDEX | ID | SIZE | NAME |
|-------|----|------|------|
|     1 |  2 |  200 |  bcd |
|     1 |  5 |  200 |  aaa |
|     2 |  3 |  400 |  xyz |
|     3 |  1 |  500 |  abc |
|     3 |  4 |  500 |  bbb |

小提琴here