MySQL(SQLite):根据具有多行结果的查询插入行

时间:2013-12-13 18:58:59

标签: mysql select insert sqlite

有没有办法根据具有多行结果的查询插入行?

这样的事情:

For each row in (select brand, date from table_A where ...) insert into table_B (field_1, field_2) VALUES (table_A.brand, table_A.date);

使用SQLite3(首选)/ MySQL。

由于

这是我尝试过的:

insert into media_tags (fk_id_media, fk_id_tag) VALUES ( (select id_media from media where fullpath like "%C32%") , (select id_tag from tags where tagname='digital') )

1 个答案:

答案 0 :(得分:3)

只是做:

insert into table_B (field_1, field_2)
select brand, date
from table_A
where...

这将在table_B中插入从SELECT返回的所有行。

在您的情况下,您可以更改::

insert into media_tags (fk_id_media, fk_id_tag)
values (
  (
    select id_media
    from media
    where fullpath like "%C32%"
    ), (
    select id_tag
    from tags
    where tagname = 'digital'
    )
  )

insert into media_tags (fk_id_media, fk_id_tag)
select id_media, (
    select id_tag
    from tags
    where tagname = 'digital'
    )
from media
where fullpath like "%C32%"

虽然这只会给你fk_id_media中的变量值。 fk_id_tag总是一样的,但看起来你想要那样。