动态选择MySQL更新

动态选择MySQL更新,mysql,Mysql,这更像是一个理论问题。我有一个页面,其中包含大量不同的文本字段、下拉框等。每个用户都有自己的“页面”,可以通过我所指的更新页面进行更新。他根据自己的选择更新字段。它将大约30个变量(如果每个字段都输入)传递到“预览页面”。如果用户喜欢预览页面,则单击预览页面底部的“更新”按钮,所有各种变量都会更新到相应的MySQL表中,其他人看到的“自己的页面”也会动态更新。(如果这个解释不清楚,请告诉我) 第一次插入此信息很容易。然而,当用户以后只想更新页面的几个字段时,这就是我感到困惑的地方。我如何使MyS

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

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

如果我的要求不合理,请告诉我,我会再试一次


谢谢你的帮助。

最简单的方法是

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更新查询也需要更新列名和相关变量。动态更新列名以及插入要更新的适当变量(不是留空)也让我感到困惑。当用户发布更新并进行比较时,您再次从数据库中选择页面,让您决定更新什么。或者你只是更新了很多。这有什么害处?如果将字段留空意味着“不要更改”,用户将如何清空包含数据的字段?这是一个好主意,您完全正确。我将考虑新旧页面的比较,看看我将如何做到这一点。谢谢