[英]Assign same value to different rows a specific number of times (Mysql)
我將在網站上創建一個用戶數據庫。 我正在使用MySQL。
當用戶在網站上進行注冊過程時,要求添加用戶的表進行以下過程:
當新用戶添加到表“用戶”時,該表中有一列名為“組”。 因此要求該字段或列生成一個自動遞增編號,但是具有每個值重復四(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個用戶?
尚不清楚是要update
還是select
。 這是一個select
版本:
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
,可以使用update
/ join
合並這些結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.