动态选择MySQL更新

时间:2013-02-10 05:03:43

标签: mysql

这更像是一个理论问题。我有一个包含各种文本字段,下拉框等的页面。每个用户都有他/她的“自己的页面”,可以通过我所指的更新页面进行更新。他根据自己的选择更新了字段。它将大约30个变量(如果输入每个字段)传递给“预览页面”。如果此人喜欢预览页面,那么他们会点击预览页面底部的“更新”按钮,所有各种变量都会更新到相应的MySQL表格中,其他人看到的“自己的页面”会动态更新。 (如果这个解释不清楚,请告诉我。)

首次插入此信息非常简单。但是,当用户想要稍后更新其页面的几个字段时,这就是我感到困惑的地方。如何使MySQL更新查询动态化以识别对用户想要更新的页面上的字段的更新(当他将其他字段留空时,从而使这些列的旧信息保持不变,并且它们被忽略在更新查询)。

如果我问的问题没有意义,请告诉我,我会再试一次。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最简单的方法是

UPDATE MyTable m SET m.f1 = COALESCE(input1,m.f1), m.f2 = COALESCE(input2,m.f2), ....
WHERE m.id = key;

COALESCE将返回第一个非空值(如果所有值都为空,则返回null。)

请注意,如果要强制使用默认值,可以在现有字段值之后插入默认值 像这样:

UPDATE MyTable m SET m.f1 = COALESCE(input1,m.f1,default1), m.f2 = COALESCE(input2,m.f2,default2), ....
WHERE m.id = key;

请参阅:MySQL: how to use COALESCE
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce