sql—mysql中party group的set值

8fsztsew  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(358)

我想将myclass表中grouping列的值设置为group,方法是只与4个人一起参加聚会。
这是myclass表order by id:

id  | name | grouping |
-----------------------
 1  | abc  |          |
 2  | bca  |          |
 3  | sad  |          |
 4  | tyu  |          |
 5  | hjh  |          |
 6  | lpk  |          |
 7  | ass  |          |
 8  | drc  |          |
 9  | dfg  |          |
 10 | drt  |          |
 11 | dgf  |          |

这就是我想要的:

id | name | grouping  |
------------------------
 1  | abc  |    1A     |
 2  | bca  |    1A     |
 3  | sad  |    1A     |
 4  | tyu  |    1A     |  ==> the max name of group 1 is 4 name, and then change to group 1B
 5  | hjh  |    1B     |
 6  | lpk  |    1B     |
 7  | ass  |    1B     |
 8  | drc  |    1B     |
 9  | dfg  |    1C     |
 10 | dgf  |    1C     |
 11 | drt  |    1C     |

我想在mysql查询中使用它,但实际上我想在laravelphp中使用它。谢谢你

w80xi6nr

w80xi6nr1#

这回答了问题的原始版本。
你可以在一个 select 通过这样做:

select t.*, (1 + (@rn := @rn + 1) div 4) as grouping
from t cross join
     (select @rn := -1) params
order by id;

您可以使用类似的逻辑进行设置:

set @rn := -1;

update t
    set grouping = 1 + ((@rn := @rn + 1) div 4)
    order by id;

相关问题