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

根据IN子句设置为布尔值

  •  1
  • user1032531  · 技术社区  · 7 年前

    如何在单个查询中执行以下操作?

    UPDATE clients SET online=0 WHERE id NOT IN(4,5,8,10,12) AND id>=2 AND id<=15 AND parentId=123;
    UPDATE clients SET online=1 WHERE id     IN(4,5,8,10,12) AND id>=2 AND id<=15 AND parentId=123;
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Madhur Bhaiya    7 年前

    你可以用 CASE .. WHEN

    UPDATE clients 
    SET online = CASE WHEN id IN(4,5,8,10,12)
                        THEN 1 
                      ELSE 0 
                 END
    WHERE
        id BETWEEN 2 AND 15 AND parentId = 123;
    

    IN(..) 是逻辑/比较函数。所以你可以做以下事情( )以及:

    UPDATE clients 
        SET online = (id IN(4,5,8,10,12)) 
        WHERE
            id BETWEEN 2 AND 15 AND parentId = 123;