我有一个数据库表,其中包含一个名为 features 的列,用于突出显示页面上的精选内容。目前,我正在使用两个SQL语句来打开/关闭特征行,如下所示:
-- Reset everything to non-featured
UPDATE tbl SET featured = '0';
-- Now set the selected rows as featured.
UPDATE tbl SET featured = '1' WHERE id IN (4, 10, 21);
是否可以将这两者合并为一个陈述?
答案 0 :(得分:7)
使用:
UPDATE tbl
SET featured = CASE
WHEN id IN (4, 10, 21) THEN '1'
ELSE '0'
END;
答案 1 :(得分:4)
使用:
UPDATE tbl SET featured = id IN (4, 10, 21);
<强> [编辑] 强>
@OMG小马:
有效,你可以利用Mysql中的布尔条件可以直接映射到整数这一事实。
在Postgresql中,你必须这样做,需要将布尔值转换为整数:update tbl set featured = (id in ('b','d'))::int
答案 2 :(得分:-3)
是的,您可以将这两者合并为一个声明。