是否有关于mysql查询语句的if语句?
当我更新表记录时,我想只更新某些列,如果它们有值要更新。
例如,我想要一个更新表功能,并且有一个志愿者表和一个只想要电子邮件更新的人的表。
我想使用相同的函数(将会有一个只处理upd查询的函数)并且理论上可以做到这一点......
如果您要更新志愿者表,只更新这些列,如果是mailing_list,则更新这些
我知道这可以通过使用带有两个查询语句的if语句完成,基于你正在更新的表,但我想知道是否可以只使用一个查询语句w /条件来更新表中的相应列。
这听起来像是你梦寐以求的东西,让我知道。感谢。
答案 0 :(得分:3)
我认为这应该有效:
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;
我是从MySQL网站上的update syntax获得的。
答案 1 :(得分:0)
你可以在一个查询中执行此操作,但这对我来说没有意义,为什么你想要。 也许描述你想要的功能的论据以及它们会产生什么影响?
您可以有条件地更新以下内容:
update tablereferences
set foo.bar = if( somebooleanexpression, newbarvalue, foo.bar ),
baz.quux = if( somebooleanexpression, newbazvalue, baz.quux )
where ...
允许您使用相同的查询,但控制更新哪些表。