地址表有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这样的东西? 保持简单......没有工会或一些奇怪的自我表加入。 也许我正在寻找的东西不存在......这也很好。只是好奇。
答案 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,但它是我喜欢的数据库特定功能之一。