插入由多个选择生成的多个行

时间:2017-01-04 20:07:12

标签: mysql insert multiple-tables

我有2张桌子。其中一个包含名称列表,另一个包含特定日期。我需要能够生成一个插入函数,将行插入第三个表。

对于第一个表中的每一行,我需要将第二个表中的所有行插入到第三个表中。

假设表1中有10行,表2中有20行。插入函数必须能够插入200行。

所以,如果我在名称栏上有一张玛丽,约翰和詹姆斯的表,而在日期栏上有2017-01.01,2017-05-01,2017-08-08,2016-12-31的另一张表。我需要一个插入函数,它能够将行插入到第三个表中,以便日期列中的所有日期行都在名称列中包含Mary,所有那些日期都在名称列中包含John等。

原因是我实际上在名称列上有大约400个名字,在日期列上有大约50个日期(取决于确切的选择)。我不想手动这样做。

我会谷歌,但我很难找到正确的搜索词。我得到了我不想要的答案......

2 个答案:

答案 0 :(得分:1)

您正在寻找cross join,我认为:

insert into table3 (name, date)
    select t1.name, t2.date
    from table1 t1 cross join
         table2 t2;

答案 1 :(得分:1)

此查询应该会得到相同的结果,不需要交叉。

INSERT INTO table3 (name, date)
SELECT table1.name, table2.date
FROM table1, table2;