首页 > 解决方案 > 根据两个表中设置的值,使用另一个表中的索引更新 MySQL 表

问题描述

我不知道如何问这个问题 - 它可能会在某个地方得到回答,但它有点凌乱;)

有两个表可以对其他地方的对象的标志(标签)进行排序。

表 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
)

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

标签: mysqljoinsql-update

解决方案


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

尝试:

更新 booka_flags_items t1 INNER JOIN booka_flags t2 On t1.flag = t2.title SET t1.id = t2.id


推荐阅读