如何在MySQL中更新所有字段但只有一个字段语句?

时间:2017-03-15 08:54:07

标签: mysql sql-update except

假设我有一张桌子' tbl '使用4场模式: f1,f2,f3,f4 。我有一堆数据(以csv形式,其字段的列表顺序与表格模式相同,因为我设计了它,但是将字段-f3值保留为csv中的' ,,')需要纠正我的用户,但只保留f3不变。我在那里形成如下更新声明:

UPDATE tbl VALUES ('new-f1-val','new-f2-val', IGNORE, 'new-f3-val')

当db引擎看到此语句时,它会将 IGNORE 识别为系统预定义的保留字/常量,告知db引擎忽略(即NOT TO)更新此特定字段。我没有讲童话,因为我不断地面对用户的这些需求。

在MySQL中是否有这样的声明,无论是当前的还是将来的,或者是否有任何等效的声明/程序来实现相同的结果?

==================================

很多人不明白为什么我要对这种陈述进行描绘,所以我会在这里说出我的实际动机:

  1. table' tbl'可能有很多领域。
  2. 不更新字段' f3' 是永久性条件。
  3. 没有关于纠正其他字段的信息,因此我要更新所有其他字段。
  4. 我希望简化更新声明。
  5. 我希望有一个更新语句,就像插入一样 声明没有列出每个字段名称。
  6. 如果存在这样的陈述,我可以省去修改我的 "创建嵌语句'代码更新 - 更新 - 声明代码。
  7. ==================================

    编辑: 我添加了用户给我的数据文件格式的描述,以改进我的问题。

    ==================================

3 个答案:

答案 0 :(得分:2)

我从来没有见过UPDATE以MySQL的方式编写它。您想要的典型UPDATE看起来像这样:

UPDATE tbl
SET f1 = 'new-f1-val',
    f2 = 'new-f2-val',
    f4 = 'new-f4-val'
WHERE <some condition>

如果您不想修改f3列,请将其从UPDATE声明中删除。

答案 1 :(得分:2)

查看更新查询语法。 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

答案 2 :(得分:2)

您应该始终在表格中明确添加要更新的列,这是一个很好的做法,尽管如此,您仍需要缩短查询。
话虽如此,尝试插入“null”并检查它是否有效。这里不保证,我自己也没试过。