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

根据两个表中设置的值,使用另一个表中的索引更新MySQL表,mysql,join,sql-update,Mysql,Join,Sql Update,我不知道该怎么问这个问题——它可能在某个地方得到了回答,但有点混乱;) 有两个表对其他位置的对象的标志(标签)进行排序 表1:booka\u flags中的标志 感兴趣的列是id(INT)和title(VARCHAR) 表2:booka\u flags\u项目中的标志项目 感兴趣的列是id(INT)和flag(VARCHAR) 我想将booka\u flags\u items.flag从VARCHAR(可从booka\u flags.title)更改为ID(可从booka\u flags.ID)

我不知道该怎么问这个问题——它可能在某个地方得到了回答,但有点混乱;)

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

表1:booka\u flags中的标志 感兴趣的列是id(INT)和title(VARCHAR)

表2:booka\u flags\u项目中的标志项目 感兴趣的列是id(INT)和flag(VARCHAR)

我想将
booka\u flags\u items.flag
从VARCHAR(可从
booka\u flags.title
)更改为ID(可从
booka\u 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,您更新的查询看起来不正确

尝试:

更新t1.flag=t2.title上的booka_标志\u项目t1内部连接booka_标志t2
设置t1.id=t2.id

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

尝试:

更新t1.flag=t2.title上的booka_标志\u项目t1内部连接booka_标志t2
设置t1.id=t2.id

谢谢你,这很有效。。。最后一个查询是“将booka\u flag\u项目更新为I内部连接booka\u flags为F On I.flag=F.title SET I.flag=F.id”谢谢,这很有效。。。最后一个查询是“将booka\u flag\u项目更新为I内部连接booka\u flags为F On I.flag=F.title SET I.flag=F.id”