我试图提出一个MySQL查询,该查询将数据插入到包含来自其他表的数据的表中。
那是我的结构:
表1:
ID
killerid
playerid
weapon
表2:
ID
playername
现在我想在collumn table1
中插入killerid
并在where子句中插入playerid
两个名称的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,但在I&#中我只有2个名字(example1和example2) 39;插入。
所以我必须在表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
我希望这很清楚。
答案 0 :(得分:0)
你的sql说:
你需要在varo_lastkills表中有一些像varo_users表这样的值,如果你没有全等值你的查询不运行
答案 1 :(得分:0)
根据您获得的数据,您可以按照以下方式获得分数:
INSERT INTO table2(killerid, playerid, weapon)
SELECT t1.id as killerid, -- the 'as killerid' is not required but is useful
t1.playerid, -- to help understand what's intended
t1.weapon
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t2.killerid = t1.id
WHERE t2.playername = 'example'
现在我们已经有了一个表结构,解决方案更容易弄明白。
INSERT INTO kills (killerid, victimid, weapon)
SELECT u1.ID as killerid,
u2.ID as victimid,
d.weapon
FROM USERS u1
INNER JOIN USERS u2
ON 1 = 1
INNER JOIN (SELECT 'FIST' as weapon
FROM DUAL) d
ON 1 = 1
WHERE u1.playername = 'example1' AND
u2.playername = 'example2';
分享并享受。