【问题标题】:Copying value in mysql from column1 to column2将mysql中的值从column1复制到column2
【发布时间】:2015-08-01 20:25:09
【问题描述】:

我有一个名为 table1 的表,其中包含 column1(pk) 和 column2。

在sql中插入table1时,是否可以检查column2的值,如果column2的值为null,则将column1的值插入columns2

如果是,我该怎么做?

【问题讨论】:

  • 我不明白这里的问题。如果您将INSERT 放入表中,则不会有现有值。除非您尝试这样做INSERT ... ON DUPLICATE KEY UPDATE ...

标签: mysql


【解决方案1】:

是的,使用IF 声明:

UPDATE table1
SET column2 = IF(column1 IS NOT NULL, column1, 'Something else')

【讨论】:

  • 您在哪里检查 column2 是否为空?
【解决方案2】:

如果您不想对 SQL 语句进行任何更改,您可以在 table1 上定义一个 BEFORE INSERT 触发器,该触发器有条件地为 column2 分配一个值。触发器的主体将包含这样的模式:

  IF NEW.column2 IS NULL THEN
    SET NEW.column2 = NEW.column1;
  END IF;

(注意:NEW.column1 的值是语句中提供的值,如果省略则为 NULL。也就是说,如果 column1 的值是由 auto_increment 分配的,则分配的值是 BEFORE INSERT 触发器中可用,因此无法复制到column2。)


否则,您需要修改INSERT 语句本身,以使用适当的表达式为column2 提供值,例如

 IFNULL(:col2val,:col1val)

【讨论】:

    【解决方案3】:

    您可能希望为此创建一个 BEFORE INSERT 触发器。

    语法:http://www.techonthenet.com/oracle/triggers/before_insert.php

    文档:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2023-01-18
      • 2016-01-01
      相关资源
      最近更新 更多