mysql - 根据两个表中设置的值,使用另一个表中的索引更新 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
)
解决这样的查询的正确方法是什么?
解决方案
我猜你想用 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