我将在网站上创建一个用户数据库。我正在使用 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/