如何使用select语句插入表中?

时间:2014-03-18 09:53:17

标签: sql

我有两个带连接表的表。这是我的架构。

SOLDIERS
  SOLDIER_ID     integer
  FIRST_NAME  varchar(50)
  LAST_NAME   varchar(50)

RANKS
  RANK_ID        integer
  NAME        varchar(50)

SOLDIER_RANKS
  SOLDIER_ID     integer
  RANK_ID        integer

我正在尝试在SOLDIER_RANKS表中插入一行。我知道id的{​​{1}},我知道SOLDIER的{​​{1}}。这是我尝试过的,但我无法弄清楚如何对name进行硬编码。

RANK

我如何使这项工作?

3 个答案:

答案 0 :(得分:4)

无需使用值子句:

INSERT INTO SOLDIER_RANKS(SOLDIER_ID, RANK_ID)
SELECT 1,
       RANK.RANK_ID
WHERE  RANK.NAME = 'COLONEL';

答案 1 :(得分:3)

INSERT INTO SOLDIER_RANKS(SOLDIER_ID, RANK_ID)
values (
  -- Here I need to specify that SOLDIER_ID = 1
  1,  
  (SELECT RANK.RANK_ID from <rank-table-name> RANK WHERE RANK.NAME = 'COLONEL')
);

答案 2 :(得分:1)

尝试这些方法中的任何一种

INSERT INTO SOLDIER RANKS(SOLDIER_ID, RANK_ID)
values 
(
  1,  
  (SELECT RANK.RANK_ID FROM RANKS WHERE RANK.NAME = 'COLONEL')
);

OR

  INSERT INTO SOLDIER RANKS(SOLDIER_ID, RANK_ID)
  SELECT
  1,  
  RANK.RANK_ID 
  FROM RANKS WHERE RANK.NAME = 'COLONEL'