假设我有一个带有 4 字段模式的表">tbl":f1,f2,f3,f4。我有一堆数据(以 csv 形式,其字段列表顺序与表架构的 [因为我设计它] 相同,但在 csv 中将 field-f3 值保留为",",")需要从我的用户更正,但只保持 f3 不变。我想有这样的更新声明,如:
UPDATE tbl VALUES ('new-f1-val','new-f2-val', IGNORE, 'new-f3-val')
当数据库引擎看到此语句时,它将IGNORE识别为系统预定义的保留字/常量,它告诉数据库引擎忽略(即不)更新此特定字段。我不是在讲童话故事,因为我经常面对用户的这些需求。
MySQL中是否有这样的语句,无论是当前的还是未来的,或任何等效的语句/过程来实现相同的结果?
====
==================================很多人不明白我为什么会这样想,所以我在这里说说我的实际动机:
- 表"TBL"可能有许多字段。
- 不更新字段"f3">是永久条件。
- 没有关于可能需要更正哪些其他字段的信息,因此我将更新所有其他字段。
- 我希望使更新声明简短。
- 我希望有一个更新语句,就像插入一样 语句,不列出每个字段名称。
- 如果存在这样的语句,我可以省去修改我的 "创建插入语句"代码到"更新更新语句"代码。
====
==================================编辑: 我添加了用户给我的数据文件格式的描述,以完善我的问题。
====
==================================我从未见过像在MySQL中那样编写UPDATE
。 按照您想要的内容的典型UPDATE
如下所示:
UPDATE tbl
SET f1 = 'new-f1-val',
f2 = 'new-f2-val',
f4 = 'new-f4-val'
WHERE <some condition>
如果您不想修改f3
列,则只需将其排除在UPDATE
语句之外即可。
您应该始终在表中显式添加要更新的列,这是很好的做法,尽管您需要缩短查询。
话虽如此,请尝试插入"null"并检查它是否有效。这里没有保证,我自己没有尝试过。
请查看更新查询语法。 https://dev.mysql.com/doc/refman/5.7/en/update.html
Update tbl set f1=new-f1-val, f2=new-f2-val, f4=new-f4-val