首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql更新,跳过或忽略不需要的字段

Mysql更新,跳过或忽略不需要的字段
EN

Stack Overflow用户
提问于 2015-11-25 23:54:40
回答 3查看 1.6K关注 0票数 0

我有一个带有给定字段的示例数据库。

我试图实现的是在sql上执行update查询,跳过我不感兴趣更新的字段。

代码语言:javascript
复制
UPDATE `nmc_cd` SET `CDID`=[value-1],`CDTitle`=[value-2],`CDYear`=[value-3],`pubID`=[value-4],`catID`=[value-5],`CDPrice`=[value-6] WHERE 1

这是提供给我的语法。

我设法用这个查询更新了一个单独的列

代码语言:javascript
复制
UPDATE `nmc_cd` SET `CDTitle`= 'Black President01' WHERE `CDID` = 978

但是,当我尝试使用语法只更新一个字段而忽略其余字段时,一切都乱套了

代码语言:javascript
复制
UPDATE `nmc_cd` SET `CDTitle`='Black President01',`pubID`="",`catID`="",`CDPrice`="" WHERE `CDID` = 653

这将更新标题,并将"“中的其他字段替换为数据库中的空字段。

第二个最好的方法是使用NULL

代码语言:javascript
复制
UPDATE `nmc_cd` SET `CDTitle`='Black President03',`pubID`="NULL",`catID`="NULL",`CDPrice`="" WHERE `CDID` = 653

它返回更新后的黑色President03,但字段的其余部分被替换为NULL ;(

如果字段已经填充,是否有这样的方法可以更新并忽略该字段?

我知道最明显的答案就是省略我不需要更新的字段,但是我有一个html格式的表单,它可以动态地填充结果。见附件中的图片。

html form

我正在考虑执行一个sql查询,只更新已更改的字段,并保留其他字段不变。

我可以在php上做一个if,但那太乏味了。

有没有其他更简单的方法来解决这个问题?

提前感谢您的忠告。

干杯!

EN

回答 3

Stack Overflow用户

发布于 2015-11-26 01:15:54

你可以用很少的工作量和几个if来做一个自定义查询。

代码语言:javascript
复制
query = "UPDATE `nmc_cd` SET";

if (title filled) query += " `CDTitle`= 'title_value',";
if (pub filled) query += " `pubID`= 'pub value',";
if (cat filled) query += " `catID`= 'cat value',";
if (price filled) query += " `CDPrice`= 'price value',";

//Substring to trim the comma. You should check at least 1 field is filled
query = substr(query, 0, strlen(query) -1) + " WHERE `CDID` = '653';"
票数 1
EN

Stack Overflow用户

发布于 2015-11-26 00:01:43

你要找的方法是"IF NOT NULL“。但在您的情况下,只需保留不会更新的属性;)

票数 0
EN

Stack Overflow用户

发布于 2015-11-26 00:23:57

最快、最简单的方法就是将表单值重新提交到数据库中。

如果这并不吸引人,那么您可以使用切换用例来根据传入的数据来构建查询。假设您必须存储以前的数据来比较已更改的数据,或者使用JS进行身份验证和onchange ...

另一个sql解决方案是(psudecode),但是您应该能够使用下面的代码来解决这个问题

代码语言:javascript
复制
UPDATE nmc_cd
    IF(CDYear='value')    
    (
        SET CDYear= 1   
    )
    ELSE
    (
         ...
    )
    ENDIF
WHERE CDIDIS = 653

更多信息https://bytes.com/topic/mysql/answers/898785-mysql-how-use-update-if-else-condition

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33920930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档