从另一张表中插入多行信息到MySQL表中

8
我使用的是MySQL 5.6版本。我有一个表"event",包含两个id和一个日期,还有一个表"student",其中包含一个"id"列。我想在名字匹配时插入两个id (WHERE firstname =.., AND lastname=..,)。但是,我不知道如何在一个插入命令中从两行中获取"id"。请问有人可以帮我吗?
谢谢, Paul
1个回答

18

如果您想要插入表格,那么您需要使用insert。如果要从另一个表或查询中获取数据,则需要使用insert . . . select表单。

根据您所说的情况,似乎这正是您想要的:

insert into event(id1, id2, date)
    select s1.id, s2.id, now()
    from student s1 cross join
         student s2
    where s1.id <> s2.id and
          s1.firstname = firstname and s1.lastname = lastname and
          s2.firstname = firstname and s2.lastname = lastname;

它会返回所有学生姓名相同但ID不同的配对。


这不完全是我所要求的,可能是因为我的问题不够明确。但是我从中得到了启发,并得到了我想要的结果。非常感谢! - verticese
还有一个问题:我注意到如果我的表中有重复项,它会多次计算每个重复项,结果将是,例如8个重复项,64行。我猜这是因为“交叉连接”或某些未在where子句中设置的东西。是否有一种方法可以在查询中不选择我之前选择的行? - verticese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接