如何将mysql输入复制到另一个表?

时间:2014-10-08 01:05:00

标签: mysql sql

所以我有这个代码,我想弄清楚,我不确定如何将我的输入从一个表复制到另一个表。

说我有这个输入

Insert into TABLE Value ('blah');

我希望得到我刚刚插入的值并将其插入另一个表

Insert into ANOTHERTABLE value ('blah'); 

但是在这种情况下,我不知道什么是blah,我只是想从第一个声明中复制它。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

delimiter //

create table first_table
(fieldname varchar(20));

create table second_table
(fieldname varchar(20));

create trigger insert_into_second before insert on first_table
    for each row begin
        insert into second_table (fieldname)
             values (new.fieldname);
end
//

insert into first_table values ('blah');

delimiter ;

select * from second_table;

以上输出:

| FIELDNAME |
|-----------|
|      blah |

小提琴演示: http://sqlfiddle.com/#!2/e4384/1/0

注意,在小提琴中,仅在插入FIRST_TABLE后,我从SECOND_TABLE中选择,并将插入反映到FIRST_TABLE中。创建此触发器后,任何进入FIRST_TABLE的插入也将进入SECOND_TABLE。

在MySQL中,默认语句分隔符通常是分号(;),为了创建触发器,必须将其更改为其他内容,在这种情况下,我使用双斜杠(//),这就是为什么你看到我设置在顶部分隔符然后在结尾处返回分号。

答案 1 :(得分:0)

您希望从select语句中插入。

INSERT INTO TABLE (column_name)
SELECT column_name
FROM   ANOTHERTABLE 

至于"得到我刚插入的那个值" - 当然,你只需要运行两次插入 - 其次是在新表上。

您可以选择刚刚从数据库插入的数据,并使用where条件

弹出新表
INSERT INTO TABLE (column_name)
SELECT column_name
FROM   ANOTHERTABLE 
WHERE  ANOTHERTABLE.ID = <YOUR ID HERE>

如果您没有最后一次插入的主键(因为它是自动增量),您应该可以使用LAST_INSERT_ID()

获取它

答案 2 :(得分:0)

理想情况下,您会将某种类型的变量传递给过程或查询,然后您可以这样做:

declare

@Blah varchar(10)
,@NewId int

set @Blah = 'blah'


insert into blah
values(@Blah)

insert into blah2
values(@Blah)


--or you can do this
insert into blah
values(@Blah)

--this gets the key of the table you just inserted
set @NewId = SCOPE_IDENTITY() --LAST_INSERT_ID() or MySQL


insert into blah2
select blah
from blah
where id = @NewId