如何更新 MySQL 中除某一字段语句外的所有字段?
How to update all fields but one certain field statement in MySQL?
假设我有一个 table 'tbl' 具有 4 字段架构:f1,f2,f3,f4 .我有一堆数据(csv 格式,其字段的列表顺序与 table 模式相同 [因为我设计它],但在 csv 中将 field-f3 值保留为 ',')需要从我的用户那里更正但只保留 f3 不变。我想象有这样一个更新语句:
UPDATE tbl VALUES ('new-f1-val','new-f2-val', IGNORE, 'new-f3-val')
当数据库引擎看到这条语句时,它会将 IGNORE 识别为系统预定义的保留 word/constant,告诉数据库引擎忽略(即 NOT TO)更新此语句特定领域。我不是在讲童话,因为我经常面对用户的这些需求。
在 MySQL 中是否有这样的声明,无论是当前的还是未来的,或者任何等效的 statements/procedures 来达到相同的结果?
==================================
很多人不理解我为什么会这样说,所以我在这里说说我的实际动机:
- table 'tbl' 可能有很多字段。
- 不更新字段 'f3' 是永久条件。
- 没有关于可能需要更正哪些其他字段的信息,因此我将更新所有其他字段。
- 希望更新语句简短。
- 我希望有一个与插入非常相似的更新语句
没有列出每个字段名称的语句。
- 如果有这样的说法,我可以省去修改我的工作
“创建插入语句”代码到“更新更新语句”代码。
==================================
编辑:
我添加了用户给我的数据文件格式的描述来完善我的问题。
==================================
我从未见过 UPDATE
像 MySQL 中那样写的。一个典型的 UPDATE
沿着你想要的路线看起来像这样:
UPDATE tbl
SET f1 = 'new-f1-val',
f2 = 'new-f2-val',
f4 = 'new-f4-val'
WHERE <some condition>
如果您不想修改 f3
列,则只需将其从 UPDATE
语句中删除即可。
检查更新查询语法。
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
您应该 始终 在 table 中显式添加要更新的列,这是一种很好的做法,尽管您需要缩短查询。
也就是说,尝试插入 "null" 并检查它是否有效。这里不能保证,我自己没试过。
假设我有一个 table 'tbl' 具有 4 字段架构:f1,f2,f3,f4 .我有一堆数据(csv 格式,其字段的列表顺序与 table 模式相同 [因为我设计它],但在 csv 中将 field-f3 值保留为 ',')需要从我的用户那里更正但只保留 f3 不变。我想象有这样一个更新语句:
UPDATE tbl VALUES ('new-f1-val','new-f2-val', IGNORE, 'new-f3-val')
当数据库引擎看到这条语句时,它会将 IGNORE 识别为系统预定义的保留 word/constant,告诉数据库引擎忽略(即 NOT TO)更新此语句特定领域。我不是在讲童话,因为我经常面对用户的这些需求。
在 MySQL 中是否有这样的声明,无论是当前的还是未来的,或者任何等效的 statements/procedures 来达到相同的结果?
==================================
很多人不理解我为什么会这样说,所以我在这里说说我的实际动机:
- table 'tbl' 可能有很多字段。
- 不更新字段 'f3' 是永久条件。
- 没有关于可能需要更正哪些其他字段的信息,因此我将更新所有其他字段。
- 希望更新语句简短。
- 我希望有一个与插入非常相似的更新语句 没有列出每个字段名称的语句。
- 如果有这样的说法,我可以省去修改我的工作 “创建插入语句”代码到“更新更新语句”代码。
==================================
编辑: 我添加了用户给我的数据文件格式的描述来完善我的问题。
==================================
我从未见过 UPDATE
像 MySQL 中那样写的。一个典型的 UPDATE
沿着你想要的路线看起来像这样:
UPDATE tbl
SET f1 = 'new-f1-val',
f2 = 'new-f2-val',
f4 = 'new-f4-val'
WHERE <some condition>
如果您不想修改 f3
列,则只需将其从 UPDATE
语句中删除即可。
检查更新查询语法。 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
您应该 始终 在 table 中显式添加要更新的列,这是一种很好的做法,尽管您需要缩短查询。
也就是说,尝试插入 "null" 并检查它是否有效。这里不能保证,我自己没试过。