Mysql 根据group by和ID向行中添加(半)序列号,然后标记最新的两项
我想做一些与之前相反的事情 下面是我的示例表:Mysql 根据group by和ID向行中添加(半)序列号,然后标记最新的两项,mysql,Mysql,我想做一些与之前相反的事情 下面是我的示例表: ID NAME ---- ---- 1 Apple 2 Apple 3 Apple 4 Bravo 5 Bravo 6 Cat 7 Cat 8 Cat 9 Cat 10 Apple 11 Apple 我想添加一个新行,为每组项目添加一个序列号。问题是有些项目出现多次,但不属于同一组。它们只有在紧接着另一个顺序ID出现时才属于一起 更新后的表应如下所示: ID GROUP
ID NAME
---- ----
1 Apple
2 Apple
3 Apple
4 Bravo
5 Bravo
6 Cat
7 Cat
8 Cat
9 Cat
10 Apple
11 Apple
我想添加一个新行,为每组项目添加一个序列号。问题是有些项目出现多次,但不属于同一组。它们只有在紧接着另一个顺序ID出现时才属于一起
更新后的表应如下所示:
ID GROUP NAME
---- ----- ----
1 1 Apple
2 1 Apple
3 1 Apple
4 2 Bravo
5 2 Bravo
6 3 Cat
7 3 Cat
8 3 Cat
9 3 Cat
10 4 Apple
11 4 Apple
ID GROUP NAME MARK
---- ----- ---- ----
1 1 Apple false
2 1 Apple true
3 1 Apple true
4 2 Bravo true
5 2 Bravo true
6 3 Cat false
7 3 Cat false
8 3 Cat true
9 3 Cat true
10 4 Apple true
11 4 Apple true
然后作为最后一步,我想分别标记每组中最新的两个项目,即ID值最高的项目,有点像这样:
ID GROUP NAME
---- ----- ----
1 1 Apple
2 1 Apple
3 1 Apple
4 2 Bravo
5 2 Bravo
6 3 Cat
7 3 Cat
8 3 Cat
9 3 Cat
10 4 Apple
11 4 Apple
ID GROUP NAME MARK
---- ----- ---- ----
1 1 Apple false
2 1 Apple true
3 1 Apple true
4 2 Bravo true
5 2 Bravo true
6 3 Cat false
7 3 Cat false
8 3 Cat true
9 3 Cat true
10 4 Apple true
11 4 Apple true
如何在MySQL中做到这一点?使用变量,首先按id和名称创建组顺序,然后按id对这些grp进行排序,然后标记前两个 输出
将较低/较旧的ID标记为false,而不是最新的ID,以分配通过内联赋值有条件递增的group use变量。对于第二个任务-请注意,如果您颠倒顺序,最后两个将成为前两个。