将mysql表中的记录固定/标记为true,其余为false

时间:2016-12-14 00:02:28

标签: mysql sql

地址表有50条记录。有一个名为" primary_address_indicator"的bool字段。 我想将所选记录更新为true,并自动将所有其他49条记录设置为false。

我知道我可以使用2个sql语句执行此操作 首先(将所有记录更新为false)

UPDATE address SET address.primary_address_indicator=0

然后(将特定记录更新为true)

UPDATE address SET address.primary_address_indicator=1 WHERE address.record_id=31

有没有办法在单个sql语句中执行此操作?像@Rank这样的东西? 保持简单......没有工会或一些奇怪的自我表加入。 也许我正在寻找的东西不存在......这也很好。只是好奇。

2 个答案:

答案 0 :(得分:0)

使用案例

进行更新
  UPDATE tableName 
         SET Pin = CASE
                   WHEN 1=1      --'your condition' 
                       THEN True
                   ELSE False
                   END

PC:@keWalker

答案 1 :(得分:0)

最简单的方法是将布尔结果视为数字:

UPDATE address a
    SET a.primary_address_indicator = (a.record_id = 31);

CASE是正式的做法。这个简写特定于MySQL,但它是我喜欢的数据库特定功能之一。

相关问题