如何根据条件将记录复制到另一个表?

时间:2014-04-15 06:51:40

标签: sql sql-server sql-server-2008 triggers

我有一个table1包含4列

AssociateId, chk1, chk2, chk3

和另一个表(table2)包含相同的4列。

chk1, chk2, chk3 
  1. 列的值为'是/否/ null'
  2. 如果table1包含3条记录,则2条记录包含值' yes'对于所有chk1,chk2,chk3列,则必须将两个记录都插入到table2
  3. 此外,应从表1中删除这2条记录。
  4. 如何使用SQL Server 2008?

3 个答案:

答案 0 :(得分:0)

您可以使用交易。首先在table2中插入记录,如

Insert into table2 (column1,column2,column3)
select column1, column2,column3 from table1 
where column1 ='YES' and column2 ='YES' and column3 ='YES';

然后你可以根据相同的条件从table1中删除你的记录。提交你的交易。

答案 1 :(得分:0)

如果我对你的问题有正确的解释,我认为这对你有用:

对于table1中的insert,您可以运行此sql语句:

插入table2 chk1,chk2,chk3 值(从表1中选择chk1,chk2,chk3,其中chk1 ='是'和chk2 ='是'和chk3 ='是')

并删除table1中的记录

从table1中删除chk1 =' yes'和chk2 ='是'和chk3 ='是'

答案 2 :(得分:0)

我认为第二个条件的翻译如下图所示:

如果Table1包含如下记录,

+-------------+------+------+------+
| AssociateId | chk1 | chk2 | chk2 |
+-------------+------+------+------+
|          01 |  yes | yes  | yes  |
|          02 |  yes | yes  | yes  |
|          03 |   no | no   | yes  |
+-------------+------+------+------+

只有这样,具有AssociateId = 01,02的记录才应复制到Table2

您可以使用纯SQL在table2中实现条件INSERT,但在同一SQL查询中无法对table1执行额外的DELETE操作。

否则,创建一个存储过程并在事务中放入insert和delete查询。