这更像是一个理论问题。我有一个包含各种文本字段,下拉框等的页面。每个用户都有他/她的“自己的页面”,可以通过我所指的更新页面进行更新。他根据自己的选择更新了字段。它将大约30个变量(如果输入每个字段)传递给“预览页面”。如果此人喜欢预览页面,那么他们会点击预览页面底部的“更新”按钮,所有各种变量都会更新到相应的MySQL表格中,其他人看到的“自己的页面”会动态更新。 (如果这个解释不清楚,请告诉我。)
首次插入此信息非常简单。但是,当用户想要稍后更新其页面的几个字段时,这就是我感到困惑的地方。如何使MySQL更新查询动态化以识别对用户想要更新的页面上的字段的更新(当他将其他字段留空时,从而使这些列的旧信息保持不变,并且它们被忽略在更新查询)。
如果我问的问题没有意义,请告诉我,我会再试一次。
感谢您的帮助。
答案 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