目前,我的任务是用mkplace表中相应的mkplace_id值更新mkindex表中的Place1列。这看起来很简单,但我一定是误会了什么或者遗漏了一些细节。
所需的结果是将相应的mkplace\u id存储在mkindex.Place1中
我开始试着改变一下:UPDATE mkindexINNER JOIN mkplace ON mkindex.Place1 = mkplace.mkplace_nameSET mkindex.Place1 = mkplace.mkplace_id
这没有我想要的效果。内部连接本身实际上匹配Place1=mkplace_名称中的一些,但绝对不是所有预期的匹配。它返回了大约117个匹配项,这是它应该返回的数十万个匹配项中的一个,而且它实际上没有将mkindex.Place1设置为mkplace.mkplace_name的任何行。
这让我尝试了其他一些方法,包括:UPDATE mkindexSET mkindex.Place1 = ( SELECT mkplace_id FROM mkplace WHERE mkindex.Place1 = mkplace.mkplace_name LIMIT 1)
匹配的数目似乎在正确的数字附近,但它只是将Place1的每个实例替换为NULL。
我是不是忽略了一些显而易见的事情?我还认为这是由于排序问题,所以我在查询之前也尝试过运行此命令:ALTER TABLE mkplace CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_ci
任何指导都是非常感谢的,在这一点上我比任何东西都困惑。
mkindex(拉丁语通用词)
mkplace公司
(通用技术8)
最佳答案
您的第一个查询看起来很好,我将给出一个提示,可能只有117行mkindex.Place1实际上等于mkplace.mkplace_name。机器不会说谎。您可以在每列周围添加TRIM(),但我怀疑这会有帮助。要了解您正在处理的问题,请先分析mkindex。
SELECT
mkindex.Place1,
COUNT(*)
FROM
mkindex
GROUP BY
mkindex.Place1;
关于mysql - 无法使用来自另一个的相应数据正确更新一个MYSQL表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47209239/