代码之家  ›  专栏  ›  技术社区  ›  leepowers

mysql条件更新

  •  1
  • leepowers  · 技术社区  · 16 年前

    我有一个数据库表,列名为 作为特色的 用于突出显示页面上的特色内容。目前,我正在使用两个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);  
    

    是否可以将这两种情况合并成一种说法?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Michael Buen    16 年前

    用途:

    UPDATE tbl SET featured = id IN (4, 10, 21);  
    

    [编辑]

    OMG小马:

    这样,您就可以利用MySQL中的布尔条件可以直接映射到整数这一事实。

    在PostgreSQL中,您必须这样做,需要将布尔值强制转换为整数:

    update tbl set featured = (id in ('b','d'))::int
    
        2
  •  7
  •   OMG Ponies    16 年前

    用途:

    UPDATE tbl
       SET featured = CASE 
                        WHEN id IN (4, 10, 21) THEN '1'
                        ELSE '0'
                      END;
    
        3
  •  -3
  •   JHK    16 年前

    是的,您可以将这两个语句组合成一个语句。