具有多个JOIN的MySQL UPDATE表

时间:2012-07-18 12:02:50

标签: mysql join insert

我需要在表中添加一些记录,但只能添加与某个链接表匹配的记录。 有三个表如下:

extension_prefs (extension_id, value, parameter)
extension (id, client_id)
client (id, parent_client_id)

这些链接如下:

extension_prefs.extension_id = extension.id AND extension.client_id = client.id

对于属于具有特定extension_prefs的客户端的每个扩展,我需要向parent_client_id插入4条记录。我不知道实现这个的语法,虽然我觉得它很简单。

编辑:是的,我搞砸了,这些记录需要更新而不是插入。

非常感谢

乔治

1 个答案:

答案 0 :(得分:0)

您可以针对每个首选项调用以下查询,并将保存所有必需的扩展名。

更新: 以下查询为首选项插入新行,如果存在则更新现有行 这假设extension_prefs表对extension_id和参数列具有唯一约束。

INSERT INTO extension_prefs (extension_id, parameter, value)
  SELECT e.id, "key", "value"
   FROM extension e
   JOIN client c ON e.client_id = c.id
   WHERE c.parent_client_id = 123
ON DUPLICATE KEY
  UPDATE value = "value"