根据两个表中设置的值,使用另一个表中的索引更新MySQL表
我不知道该怎么问这个问题——它可能在某个地方得到了回答,但有点混乱;) 有两个表对其他位置的对象的标志(标签)进行排序 表1:booka\u flags中的标志 感兴趣的列是id(INT)和title(VARCHAR) 表2:booka\u flags\u项目中的标志项目 感兴趣的列是id(INT)和flag(VARCHAR) 我想将根据两个表中设置的值,使用另一个表中的索引更新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)
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”