mysql - SQL - 根据多个条件插入数据

标签 mysql sql insert

我正在尝试根据另一个表中的数据插入具有不同数据的多行。

场景:

我有列 tbl1_actiontbl1_actiondate。 我想在 tbl2 中搜索 tbl2_reviewdatetbl2_destroydate 中的数据。如果 tbl2_reviewdate 中有数据,那么我需要 tbl1_action = 'review'tbl1_actiondate = tbl2_reviewdate。如果tbl2_destroydate中有数据,我需要另一tbl1_action = 'destroy'tbl1_actiondate = tbl2_destroydate。

总结一下所有可能的情况:

If tbl2_ReviewDate IS NULL AND
   tbl2_DestroyDate IS NULL

将一条记录插入到 tbl1 中,其中 action 且 actiondate = NULL

   tbl2_ReviewDate IS NOT NULL AND
   tbl2_DestroyDate IS NULL
Insert one row with tbl1_action = 'Review' and tbl1_actiondate = tbl2_reviewdate

   tbl2_ IS NULL AND
   tbl2_DestroyDate IS NOT NULL
Insert one row with tbl1_action = 'Destroy' and tbl1_actiondate = tbl2_destroydate

   tbl2_ReviewDate IS NOT NULL AND
   tbl2_DestroyDate IS NOT NULL
Insert two rows; One with tbl1_action = 'Destroy' and tbl1_actiondate = tbl2_destroydate and one with tbl1_action = 'Review' and tbl1_actiondate = tbl2_reviewdate.

是否可以在一个脚本中完成这一切?最好的方法是什么?

谢谢你的帮助

最佳答案

我想你想要这样的东西:

insert into table1(action, date)
    select 'Review', ActionDate
    from tbl2
    where tbl2.ReviewDate IS NOT NULL
    union all
    select 'Destroy', DestroyDate
    from tbl2
    where tbl2.DestroyDate IS NOT NULL;

您也可以将其作为两个单独的 insert 语句来执行。

关于mysql - SQL - 根据多个条件插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30843549/

相关文章:

连接查询中的 MySQL 条件字段

mysql - 从mysql中给定的两个日期获取最大日期

c# - 如何在 SQL 中选择最早的日期?

python - 如何获取当前用户和其他用户之间的最后一条消息?

mysql - 使用 visual studio CLR/C 在 mysql 中插入变量

activerecord - 在Yii中批量插入

mysql - 从多个查询创建 View

javascript - 为什么 async.each Nodejs 不能正常工作?

SQL。列最大

sql - 使用INSERT-OUTPUT为另一个INSERT提供值