【发布时间】:2014-08-27 23:37:25
【问题描述】:
我有两个 MYSQL 表 cases 和 pivot
cases 看起来像这样:
Idgame Id
1 2
1 1
1 5
1 3
1 1
1 6
... ...
1 2
pivot 看起来像这样:
Idgame Id Icone
1 1 7
1 2 14
1 3 15
1 5 6
1 6 1
pivot 中的所有 Id 必须是 cases 的唯一 Id
用户可以修改cases中的Id,所以当有变化我想更新pivot。
1) 如果有一个新的 Id 尚未 IN pivot 我想在 pivot 中添加一个新行,Icone = 1(我将 1 设置为默认值)
2) 如果 cases 中不再有某些 Id,我想在 pivot 中删除它们
3) 如果 ID 仍在 cases 中,我不会更改 pivot 中的任何内容
我正在尝试使用 REPLACE INTO 或 INSERT ON DUPLICATE KEY 来做到这一点,但我无法做到......
我尝试了类似下面的方法。它几乎可以工作,但不执行删除(第 2 点):
我在pivot 的 3 列(id、idgame 和 icone)上添加了 PRIMARY KEY。
REPLACE INTO `pivot` (id,idgame,icone)
SELECT DISTINCT cases.id, cases.idgame, pivot.icone
FROM `cases`
LEFT JOIN pivot ON (pivot.Idgame = cases.Idgame AND pivot.id = cases.id)
WHERE cases.Idgame = 1
是否可以只用一个请求来做到这一点?
【问题讨论】: