我有一个表格(简化版),如下所示:
id | name | selfreference | selfreference-name
------ | -------| --------------| ------------------
1 | Vienna | |
2 | Wien | | Vienna
3 | Виена | | Vienna
selfreference 列引用同一个表的id 号。在上面的例子中,Wien 和 Виена 指的是同一个城市,所以它们的 selfreference 列的值应该等于 1。
换句话说,我需要做类似的事情
update `places`
set `places`.`selfreference` =
(select `places`.`id` from `places`where `places`.`name` = `places`.`selfreference-name`)
但是上面的SELECT语句显然是错误的。我不知道如何进行。
如有任何提示,我们将不胜感激。
一切顺利, 丁香
编辑:所需的输出如下所示:
id | name | selfreference | selfreference-name
------ | -------| --------------| ------------------
1 | Vienna | |
2 | Wien | 1 | Vienna
3 | Виена | 1 | Vienna
最佳答案
你可能需要一个 self 加入
用选择检查
select a.*, b.*
from `places` as a
inner join `places` as b
where b.`name` = a.`selfreference-name`;
然后如果上面的查询给你正确的结果
update `places` as a
inner join `places` as b
set b.`selfreference` = ab.`id`
where b.`name` = a.`selfreference-name`;
关于mysql - 使用自引用列更新 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38539984/