根据两个表中设置的值,使用另一个表的索引更新MySQL表

时间:2018-07-26 15:09:44

标签: mysql join sql-update

我不确定如何问这个问题-可能在某个地方回答了这个问题,但这有点混乱;)

有两个表对其他位置的对象的标志(标签)进行排序。

表1:booka_flags中的标志 感兴趣的列是id(INT)和title(VARCHAR)

表2:booka_flags_items中的标志项 感兴趣的列是id(INT)和flag(VARCHAR)

我想将booka_flags_items.flag从VARCHAR(可从booka_flags.title获得)更改为ID(可从booka_flags.id获得)

(经过一些研究)我编写此查询的“想法”如下:

UPDATE
  booka_flags_items
SET
  booka_flags_items.flag = booka_flags.id
FROM
  booka_flags_items
INNER JOIN
  authors
ON
  booka_flags_items.flag = booka_flags.title

但不起作用。此查询也不起作用:

UPDATE
  booka_flags_items
SET
  booka_flags_items.flag = (
      SELECT booka_flags.id
      FROM booka_flags
      INNER JOIN booka_flags_items
      ON booka_flags_items.flag = booka_flags.title
)

解决这样的查询的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我猜您想将booka_flags的id列更新为booka_flags的id列,其中标题与标记匹配。根据mysql,您更新的查询看起来不正确

尝试:

更新booka_flags_items t1 INNER JOIN booka_flags t2在t1.flag = t2.title上 设置t1.id = t2.id