簡體   English   中英

將相同的值分配給不同的行特定次數(Mysql)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM