0

我有 2 个表"TEST""TEST2"它们是same format50 列,提取如下:

Column1 (uniqueidentifier) ; Column2 ; Column3 ; UpdateSource

Column1 是唯一标识符。

我想将任何行插入到 TEST 中的表 TEST2 中,但尚未在 TEST2 中(基于 Column1 作为唯一标识符)。我可以用下面的代码很好地做到这一点:

insert into test2 
select test.* 
from test 
left join test2 on test.column1 = test2.column1 
where test2.column1 is null;

但是,在 TEST2 中创建新行时,我想用固定值填充字段 UPDATESOURCE,即。UPDATESOURCE='SCRIPT A' 用于此脚本在 TEST2 中创建的所有行。

如何在上面的查询中指定固定值 - 还是需要重写查询?

由于 UPDATESOURCE 在 TEST 中为空,我只能从该表中删除该字段,如果它有所不同,但我需要在 TEST2 中设置 UPDATESOURCE 在不同的脚本中执行不同的值,所以不能简单地使用默认值设置这个领域。

任何帮助,将不胜感激。

4

3 回答 3

1

您可以显式列出insert语句中的列。然后你可以一次操作一个:

insert into test2(<list of all columns>)
    select <list of all columns except update source>, 'Script A' as UpdateSource
    from test left join
         test2
         on test.column1 = test2.column1
    where test2.column1 is null;

要获取列表,您可以使用:

select group_concat(column_name separator ', ')
from information_schema.columns
where table_name = 'test2';
于 2013-08-31T12:48:47.110 回答
0

指定要显式插入的列:

INSERT INTO test2 (Column1, Column2, Column3, UpdateSource)
SELECT test.Column1, test.Column2, test.Column3, 'SCRIPT A'
FROM ...
于 2013-08-31T12:48:24.053 回答
0

检查简单的插入语句语法 - http://dev.mysql.com/doc/refman/5.6/en/insert.html

INSERT INTO TBALE2 (COL1, COL2, COL3, ..., COLN, UPDATESOURCE) VALUES 
SELECT a.COL1, a.COL2, a.COL3, ..., a.COLN, 'SCRIPT A'
FROM TEST a
LFET JOIN TEST2 b ON a.COL1 = b.COL2 
WHERE a.COL1 IS NULL;

希望这可以帮助。

于 2013-08-31T12:49:47.257 回答