【问题标题】:SQL Query add default valueSQL 查询添加默认值
【发布时间】:2023-03-25 06:02:01
【问题描述】:

我有一个 SQL 查询,它向表中加载了 +1000 条记录。我们添加了一个新字段来区分某个值,我需要将它添加到查询中。是否有任何命令可以自动化该过程?它会在所有插入的末尾添加一个默认值。

更新:该字段已经有一个默认值 0。带有这些插入的查询必须将该字段指定为 1。我需要一种方法来将该默认值添加到这些特定插入中。

Update2:查询类型为 INSERT INTO xx(xx,xx,x,x,x,x) VALUES (x,x,x,x), (x,xx,x,x,x), -- --> 在末尾添加新值

更新 3:答案无效,因为我有超过 1000 个插入,我无法手动添加该字段

【问题讨论】:

  • 您可以为新的指定一个默认值。
  • automates the process => 你是什么意思?
  • 我有一个 SQL 查询,它向表中加载了 +1000 条记录。 什么类型的查询?加载数据文件?插入 .. 选择?还有什么?
  • 更新问题
  • 在您的问题中需要明确的信息。

标签: mysql sql bash


【解决方案1】:

您可以为表格中的该列设置“默认”值。 如果它是布尔值,则将默认表达式设置为 False 或 True。同样适用于字符或整数或时间戳。

但是,如果您出于某种原因只想通过 Query 设置它,只需将该值添加到查询中即可。为什么不呢!

示例查询:

    INSERT INTO tab(c1,c2,...descriminate_column) VALUES(v1,v2,...FALSE)

    INSERT INTO tab(c1,c2,...descriminate_column) VALUES(v1,v2,...NULL)

    INSERT INTO tab(c1,c2,...descriminate_column) VALUES(v1,v2,...'default_val')

根据您更新后的问题进行更新:

正如我从您的更新中了解到的,您有一个默认为 False 的布尔列,并且您希望仅针对循环中的某些插入将该列设置为 True,并且您希望包含所有查询的列名。 如果是这种情况,您可以使用以下查询插入默认值:

INSERT INTO tab(c1, c2, c3, c4, discriminate_column) VALUES(204, 'test', '1.2.2.3', 'today', default)

更新 2:

插入到 xx(xx,xx,x,x,x,x) 值 (x,x,x,x), (x,xx,x,x,x)

提及的列数和值数应始终相等。如果您想为某些查询保留默认值,请为该插入输入 default

插入到 xx(xx,xx,x,x,x,x) 值 (x,x,x,x,default), (x,xx,x,x,x)

【讨论】:

  • 但是我如何自动化该过程以将默认值添加到我的查询中的所有插入。也就是Values(x,x,x),(x,x,x),(x,x,x),(x,x,x),(x,x,x)等等n次I必须在最后添加所述字段。这不是单个插入,而是我已经在文件中生成的 1000 个插入。
  • @Diego 我知道这个问题已经很久了,但我可以知道这个问题发生了什么吗?老实说,我并没有完全理解这个问题。
【解决方案2】:

如果是insert...select:

insert into MyTable (col1, col2, ..., thenewcolumn)
select column1, column2, ..., 1
from somewhere

如果是常规插入,只需将1 放入值中即可:

insert into MyTable (col1, col2, ..., thenewcolumn)
values
(12, 'abc',...,1)

【讨论】:

    【解决方案3】:

    您可以在插入之前更改默认值:

    alter table t alter col set default = 1;
    

    然后将其改回或删除:

    alter table t alter col set default = 0;
    alter table t alter col drop default;
    

    您不必修改 insert 语句,除非列已经是它们的一部分(因为显式值会覆盖默认值)。

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多