【发布时间】:2024-01-20 11:51:01
【问题描述】:
假设我有一个表 'tbl' 具有 4 字段架构:f1,f2,f3,f4。我有一堆数据(以 csv 形式,其字段的列表顺序与表模式的 [因为我设计它] 但在 csv 中将 field-f3 值保留为 ',,')需要从我的用户那里更正但只留下 f3不变。我想象有这样一个更新声明:
UPDATE tbl VALUES ('new-f1-val','new-f2-val', IGNORE, 'new-f3-val')
当 db engine 看到这个语句时,它会将 IGNORE 识别为系统预定义的保留字/常量,告诉 db engine 忽略(即 NOT TO)更新这个特定字段。我不是在说童话,因为我经常面对用户的这些需求。
MySQL 中是否有这样的语句,无论是当前的还是未来的,或者任何等效的语句/过程来达到相同的结果?
===================================
很多人不明白我为什么要画这种说法,所以我在这里说一下我的实际动机:
- 表 'tbl' 可能有很多字段。
- 不更新字段 'f3' 是永久条件。
- 没有关于可能需要更正哪些其他字段的信息,因此我将更新所有其他字段。
- 我希望更新声明简短。
- 我希望有一个类似于插入的更新语句 声明而不列出每个字段名称。
- 如果存在这样的声明,我可以省力修改我的 “创建插入语句”代码到“更新更新语句”代码。
===================================
编辑: 我添加了用户给我的数据文件格式的描述以完善我的问题。
===================================
【问题讨论】:
-
为什么不用
UPDATE tbl set f1='new-f1-val', f2='new-f2-val'样式更新? -
您是否有不希望更新 f3 的情况?
-
@krishna:是的,“不更新 f3”是永久条件。 @sphere:我不想列出其他字段,因为表格可能有很多字段,而且有点乏味。总而言之。如果有这样的语句,我可以很容易地将我的“creating-insert-statement”代码修改为“creating-update-statement”代码。
标签: mysql sql-update except