【发布时间】:2014-12-20 21:58:40
【问题描述】:
我正在尝试提出一个 MySQL 查询,该查询将在一个表中插入数据以及来自另一个表的数据。
这是我的结构:
表1:
IDkilleridplayeridweapon
表2:
IDplayername
现在我想在 killerid 和 playerid 列的 table1 中插入 where 子句中两个名称的 ID。
但它不会工作..
INSERT INTO table1 (killerid)
SELECT
t1.id
FROM
table1 t1
LEFT JOIN
table2 t2 ON (t2.killerid = t1.id)
WHERE t2.playername = 'example'
更好理解:
我希望这更容易理解:
还有我的桌子USERS
ID | playername [...]
-----|-------------------
1 | example1
2 | example2
还有我的桌子KILLS
ID | killerid | victimid | weapon
-----|----------------------------------
1 | 1 | 2 | FIST
2 | 2 | 1 | PISTOL
我想在KILLERS 中插入杀手 (killerid) 和受害者 (victimid) 的 ID,但我在插入时只有两个名称(example1 和 example2)。
所以我必须在我的表 USERS 中获取这两个名称的 ID。
喜欢(伪示例):
INSERT INTO `KILLERS`(`killerid`, `victimid`, `weapon`)
VALUES(
USERS.ID WHERE USERS.playername = 'example1',
USERS.ID WHERE USERS.playername = 'example2',
'FIST'
);
应该插入以下内容:
ID | killerid | victimid | weapon
-----|----------------------------------
1 | 1 | 2 | FIST
我希望这很清楚。
【问题讨论】:
-
什么错误?????????????
-
没有错误,它只插入了killderid,我不知道如何插入killderid,playerid和武器。但是当我在 table2 中有 4 行时它插入 8 行,当我有 8 行时它插入 16 等等..
-
你为什么在你的问题中使用 Table1 和 Table2 而你的示例使用了 diff...你是否打算让这个问题过于难以解决?
-
对不起,我完全忘记了。变了。
-
您正在插入
killerid。playerid和weapon应该来自哪里?执行INSERT时,您应该提供所有列或稍后您需要返回并UPDATE您之前插入的行,我怀疑这不是您想要做的。所以我们回到“playerid和weapon来自哪里?”。
标签: mysql join insert left-join