如果数字缺少 mysql,则向下移动数字


Move number down if number is missing mysql

我有一个数据库,问题编号在 1 到 21 之间,都有答案/值等。但是我希望能够删除例如问题7。如果我删除其他数字之间的问题,问题编号将自动从 1-21 更改为 1-20,而不是 1-6、8-21。这可能吗?我尝试在网上搜索,但找不到我要找的东西。

带着亲切的问候,

如何缩短它?我知道它可以通过innerjoin完成,但我不知道如何正确使用它,因为我不清楚解释。

`$sql = "DELETE FROM insertquestion 
WHERE nummer='".$questionNumber."'"; 
$deleteFromQuestion = $db->prepare($sql); 
$deleteFromQuestion->execute(); 
$updateSql = "UPDATE insertquestion SET nummer = nummer - 1 WHERE nummer >= '".$questionNumber."'"; 
$updateSql = $db->prepare($updateSql); 
$updateSql->execute();` 
另一个

时间,但随后用另一个表(vraag

您可以使用触发器执行此操作 ref:

http://www.mysqltutorial.org/mysql-triggers.aspx

或使用更新查询来设置值(但是,如果行数很大,则此方法成本很高)

Update table set q_no=q_no-1 where q_no> 5 //(if you delete a question with number 5)

此要求可能有很多方法。其中之一是您可以通过触发器实现它。编写一个删除后触发器,该触发器将更新表的所有问题编号。

CREATE TRIGGER tblquestion_delete AFTER DELETE on tblquestion
FOR EACH ROW
BEGIN
    UPDATE tblquestion
    SET qno = qno - 1
    WHERE qno > old.qno;
END

另一种方法是您可以在删除查询后立即编写此查询。

 $sql = "DELETE FROM insertquestion WHERE number='".$questionNumber."' ;
 UPDATE tblquestion SET number = number - 1 WHERE number > '".$questionNumber."' ; ";