1、改变数据表某条记录某个字段的值,同时把其他记录该字段设置为另一个值
举个例子:
有一张表 billing_type,字段 id 是主键,字段 is_default 表示是否默认(1是 0否),此时有需求要将id = 666 的记录设为默认,sql为
UPDATE billing_type b
SET b.is_default = CASE WHEN b.id = 666 THEN 1 ELSE 0 END
2、交换两条记录的某个字段的值
举个例子:
还是表 billing_type,字段 position 表示改记录的排序位置,按positon 排序后 现在 id = 666 的记录①在 id=888 记录②的下面,现在要将记录①向上移一位,很常见的排序功能,此时可将记录①与记录②的position 字段值交换达到目的,sql为
UPDATE billing_type SET position= (CASE WHEN id = 666 THEN (SELECT t.position FROM(SELECT a.position FROM billing_type a WHERE a.id = 666) t) WHEN id = 888 THEN (SELECT t.position FROM(SELECT b.position FROM billing_type b WHERE b.id = 888) t)END)WHERE id=666 or id=888