Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建将“链接”ID转换为“分组”ID的查询_Mysql - Fatal编程技术网

Mysql 创建将“链接”ID转换为“分组”ID的查询

Mysql 创建将“链接”ID转换为“分组”ID的查询,mysql,Mysql,我请求任何人帮助我更好地命名这个问题,我不知道如何称呼它。也许有人在阅读了下面的问题后会有一个想法: 所以我在MySQL中存储了一组玩家和他们的组。在DB中,由于遗留原因,它们以类似于链的奇怪方式存储,如下所示: Player_Id New_Group 100 1 101 0 102 0 103 0 104 1 105 0 106 0 107

我请求任何人帮助我更好地命名这个问题,我不知道如何称呼它。也许有人在阅读了下面的问题后会有一个想法:

所以我在MySQL中存储了一组玩家和他们的组。在DB中,由于遗留原因,它们以类似于链的奇怪方式存储,如下所示:

Player_Id     New_Group
100           1
101           0
102           0
103           0
104           1
105           0
106           0
107           0
108           0
所以这里基本上Playerid100将新的_组设置为1。所以他是一个新团队的开始。现在所有在他之后的球员,因为他们有新的_组为0,属于他的组。当我们到达104时,一个新的小组开始了

我想做的是编写一个查询,它将给出如下结果:

Player_Id     Group_Id
100           1
101           1
102           1
103           1
104           2
105           2
106           2
107           2
108           2
你明白了……我正试图将新的_组逻辑转换成只为玩家生成伪组ID的东西

但是,这超出了我的SQL技能。如果有任何SQL专家可以帮助我,那就太棒了。我使用MySQL。

这是怎么回事

SELECT player_id
     , CASE WHEN new_group = 1 THEN @i:=@i+1 ELSE @i:=@i END i 
  FROM my_table
     , (SELECT @i:=0) vars 
 ORDER 
    BY player_id;
SET @group = 0;
SELECT Player_Id, IF(New_Group, @group:=@group + 1, @group) AS Group_Id
FROM [table]
ORDER BY Player_Id;

假设表中有某列正在升序,则可以执行以下操作:

select Player_Id, count(select * from [table] t2 where new_group=1 and t2.ascending_row <= t1.ascending_row) from [table] t1

在上面的示例中,Player_Id可用于提升_行,因为值都在递增。如果没有,您可能需要创建一个包含行id的列的临时表,然后使用它。

考虑一下。我不确定原件是否已订购,但我要补充。如果它没有“订购”,那么问题基本上是无法解决的。它不会在每一行出现时进行处理,并且可能新的组输入正确,但玩家Id未订购吗?显然这不是一个好方法。关系数据库中的表表示无序集。”“发生时”在上下文中没有意义,明白了。谢谢。玩家id总是沿着桌子上升吗?