【问题标题】:Set field to 1, but if it's already 1 set it to NULL将字段设置为 1,但如果它已经是 1,则将其设置为 NULL
【发布时间】:2020-11-24 15:20:13
【问题描述】:

我想用 1 更新表中的一行,但如果它已经是 1,请将其设置为 NULL,我如何最有效地检查该行是否已经是 1?

<?php
session_start();
$ai = $_POST['ai'];
$set = NULL or 1 depending on row fav is NULL or 1 
include ("connect.php");
$sql = $con->prepare('UPDATE list SET fav = ? WHERE id=?');
$sql->bind_param("si",$set, $ai);
$sql->execute();
$sql->close();
?>

【问题讨论】:

  • 我可以在 sql 查询中检查吗?
  • 是的,这就是我想要做的事情
  • 不知道叫什么
  • 两个答案都很好,非常感谢您的帮助,我不知道哪个最有效,但我会选择字符最少的一个:)

标签: php sql sql-update case


【解决方案1】:

看起来你只是想要一个 1 和 NULL 之间的翻转开关。

UPDATE list SET fav = IF(fav IS NULL, 1, NULL) WHERE id=?

【讨论】:

    【解决方案2】:

    我想你想要一个case 表达式:

    update list
    set fav = (case when fav = 1 then null else 1 end)
    where id = ?
    

    如果fav1,则将其设置为null,否则设置为1

    此查询接受一个参数,即您想要update 的行的id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2019-01-20
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多