我不确定如何问这个问题-可能在某个地方回答了这个问题,但这有点混乱;)
有两个表对其他位置的对象的标志(标签)进行排序。
表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
)
解决这样的查询的正确方法是什么?
答案 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