mysql - 使用自引用列更新 MySQL 表

标签 mysql self-reference self-referencing-table

我有一个表格(简化版),如下所示:

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/

相关文章:

python - python中的[...]是什么意思?

Python:删除自引用对象

sql - 自引用表 SQL 查询

mysql - 如何限制 MySQL 中的自引用表,以便一行不能引用自身?

mysql - 尝试使用 @DataSourceDefinition 部署数据源时出现 ClassNotFoundException

mysql - 左连接出现 "unknown column"错误

php - cakephp中通过外键显示数据

c++ - 具有指向同一类对象的指针的类

mysql - 在数据库中的一组记录上存储排序顺序的最有效方法是什么?

entity-framework - Entity Framework 核心一对一自引用关系失败