我有两个带连接表的表。这是我的架构。
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
我如何使这项工作?
答案 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'