在执行mysql insert select query时,我们可以进行条件检查吗?

时间:2011-06-02 11:56:08

标签: java mysql

我正在尝试执行mysql select insert query,如下所示。

INSERT INTO ACCOUNTS.TABLE1 (NAME,ID,STARTTIME,ENDTIME) SELECT NAME,ID,CREATIONTIME,EXPIRYTIME FROM ACCOUNTS.TABLE2 WHERE ...;

现在,如果table2中的EXPIRYTIME为null,那么我想将table1中的ENDTIME更新为当前时间戳。我已通过描述

覆盖此时间戳字段的默认行为
ENDTIME TIMESTAMP NULL DEFAULT NULL

出于某种原因。

在上面的选择插入查询中是否可以包含一些像if条件说if(expirytime == null)然后将endtime更新为当前时间戳?

3 个答案:

答案 0 :(得分:3)

只需选择您想要的内容:

INSERT INTO ACCOUNTS.TABLE1 (NAME,ID,STARTTIME,ENDTIME) 
SELECT NAME,ID,CREATIONTIME, ifnull(EXPIRYTIME, now())
FROM ACCOUNTS.TABLE2 WHERE ...;

答案 1 :(得分:1)

INSERT INTO ACCOUNTS.TABLE1 (NAME,ID,STARTTIME,ENDTIME) 
SELECT NAME,ID,CREATIONTIME,if(EXPIRYTIME is null,now(),expirytime) 
FROM ACCOUNTS.TABLE2 WHERE ...;

答案 2 :(得分:0)

如何使用插入trigger来执行此操作?