1

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

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

让我知道我的要求是否没有意义,我会再试一次。

谢谢你的帮助。

4

1 回答 1

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:如何使用 COALESCE
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

于 2013-02-10T09:23:59.193 回答