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

如果MySQL中有语句?

  •  0
  • Brad  · 技术社区  · 16 年前

    对于MySQL查询语句,是否有if语句?

    当我更新表记录时,我只想更新某些列(如果它们有要更新的值)。

    例如,我想要一个更新表函数,有一个志愿者表和一个只需要电子邮件更新的人表。

    我想使用相同的函数(会有一个只处理upd查询的函数),理论上可以这样做吗?

    如果您正在更新志愿者表,请只更新这些列,如果邮寄列表,则更新这些列

    我知道这可以通过使用一个包含两个查询语句的if语句来完成,这是基于您要更新的表,但是我想知道是否可以只使用一个包含条件的查询语句来更新表中的相应列。

    这听起来像是你梦寐以求的事情,让我知道。

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Darryl Hein IrishChieftain    16 年前

    我认为这应该有效:

    UPDATE volunteer, people
    SET volunteer.email = 'me@email.com',
        people.email = 'other@gmail.com',
        people.first_name = 'first',
    WHERE people.id = 2 AND volunteer.id = 5;
    

    我是从 update syntax 在MySQL网站上。

        2
  •  0
  •   ysth    16 年前

    能够 在一个查询中执行此操作,但我不理解您为什么要这样做。 也许描述你想要的函数的参数,它们会有什么效果?

    您可以有条件地更新如下内容:

    update tablereferences
        set foo.bar = if( somebooleanexpression, newbarvalue, foo.bar ),
            baz.quux = if( somebooleanexpression, newbazvalue, baz.quux )
        where ...
    

    允许您使用相同的查询,但控制更新哪些表。