奇怪的插入问题

时间:2011-03-10 10:05:11

标签: sql

我将表格与以下代码放在一起:

create table temp
(pnum integer,
pnam varchar(30));

insert into temp(pnum)
select player_number
from players;

insert into temp(pnam)
select player_name
from positions;

它基本上有效,除了这两个列在整个表中都是preeent的事实,它们按顺序填写。我希望第二个选择中的所有数据出现在第一个选择同一行的数据之后。目前,我只是在pnam列中得到一堆空行(而pnum填写得很好),然后在pnum列中得到一堆空行(而{{{ 1}}填写得很好)。如果有人知道如何解决这个问题,您的快速回复将非常感激!

1 个答案:

答案 0 :(得分:2)

是的 - 问题是您正在进行2次离散和单独插入,因此SQL不知道您希望数字和名称匹配。您需要将Select语句重写为一个。

假设玩家和位置表都包含一个名为player_number的字段,您可以使用它将两个表绑定在一起(如果没有,请选择两个表中的唯一字段,将数据绑定在一起并使用它。 / p>

insert into temp(pnum,pnam)
select player_number,player_name
from players inner join positions on players.player_number = positions.player_number

注意事项:

第1行 - 看看我们现在如何同时插入两列。这将为您提供您正在寻找的数据布局

第2行 - 看看我们如何选择要插入的两位数据

第3行 - 这是我们将两个表连接在一起的地方(使用两者中的player_number columnn)。我们需要将它们连接在一起,因为在第2行中我们需要从每个列中选择一列。

希望这是有道理的。如果没有,请喊。另外,也许可以阅读inserting rows using INSERT and SELECTusing inner joins