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