这更多的是一个理论问题。我有一个页面与各种文本字段,下拉框等一堆。每个用户都有他/她的“自己的页面”,可以通过这个更新页面,我指的是更新的。他根据自己的选择更新字段。它向一个“预览页”传递大约30个变量(如果每个字段都是输入的)。如果用户喜欢预览页面,那么他们点击预览页面底部的“更新”按钮,所有的变量都会被更新到适当的MySQL表中,其他人看到的他们的“自己的页面”也会动态更新。(如果这个解释不清楚,请告诉我)。
第一次插入此信息很容易。然而,当用户想要稍后只更新他的页面的几个字段时,这是我感到困惑的地方。如何使MySQL update查询动态地仅识别对页面上用户想要更新的字段的更新(同时将其他字段留空,从而使这些列的旧信息保持不变,并且在update查询中忽略这些信息)。
如果我的要求不合理,请让我知道,我会再试一次。
谢谢你的帮助。
发布于 2013-02-10 17:23:59
要做到这一点最简单的方法是
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
https://stackoverflow.com/questions/14794886
复制相似问题