mysql - 将相同的值分配给不同的行特定次数(Mysql)

标签 mysql database auto-increment

我将在网站上创建一个用户数据库。我正在使用 MySQL。

要求当用户在网站中进行注册过程时,添加用户的表进行以下过程:

当新用户添加到“users”表中时,该表中会有一个名为“group”的列。因此,要求该字段或列生成一个自动递增数字,但具有将每个值重复四 (4) 次的属性。并且还要求将注册过程限制为仅16384个用户。

例如:

id  | name      | group
1   | mark      | 1
2   | john      | 1
3   | sammy     | 1
4   | lucy      | 1
5   | richard   | 2
6   | michel    | 2
7   | jennifer  | 2
8   | mary      | 2
9   | liz       | 3
10  | mike      | 3
11  | laura     | 3
12  | astrid    | 3

我搜索和阅读了很多,但这个问题似乎很独特,我必须接受我对这个主题不太了解,而且我现在刚刚学习 MySQL 和数据库。

我在w3school.com中发现了一些东西,这是我稍微修改过的代码:

在 HTML 上创建表单:

<html>
<body>

<form action="insert.php" method="post">
name: <input type="text" name="name">
<input type="submit">
</form>

</body>
</html>

和 PHP“insert.php”:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$name = mysqli_real_escape_string($con, $_POST['name']);
$group= (WHAT CAN I PUT HERE TO MAKE THE AUTO INCREMENT BUT REPEATING THE SAME 
NUMBER FOUR TIMES?)

$sql="INSERT INTO Persons (Name, Group)
VALUES ('$name', '$group')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?>

我可以在这里做什么来将注册限制为仅 16384 个用户?

最佳答案

目前尚不清楚您想要更新还是选择。这是一个选择版本:

select t.id, t.name,
       (case when (@rn := @rn+1) is NULL then NULL
             else floor((@rn - 1)/4)
        end) as grp
from (select t.*, 
      from table t cross join
           (select @rn := 0) var
      order by id
      limit 16384
     ) t;

如果您可以依赖于 id 列是连续且没有间隙的,那么您可以使用它。

如果您想要更新,可以使用update/join来组合这些结果。

关于mysql - 将相同的值分配给不同的行特定次数(Mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725336/

相关文章:

c# - System.Data.dll 中发生“System.Data.SqlClient.SqlException”

mysql - Web 开发 - SQL 创建最近的页面

sql-server - 如何使用非自动增量 ID 执行插入语句?

mysql - Rails Rake MySql 自动递增问题与 db :fixtures:load

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

mysql - 如何将数据库行合并在一起?

c# - SQL QUERY 显示添加到表中的最新数据

php - 绑定(bind)参数的 MySQL 性能问题

android - 需要算法 SQLite Android

database - 在 Perl 中将整数转换为字符串以进行数据库插入