mysql - 使用另一个表的列中的值更新表的列

标签 mysql

我有一个带有随机名称的表(以及一个 id 作为主键):

CREATE TABLE `people` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
);

我在其中插入了 100 个随机名称及其 ID。我还有另一张具有其他名称的表:

CREATE TABLE `names` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
);

该表还有 100 个(不同的)随机名称及其 ID。我想使用表 names 的列 name 中的名称更新表 people 的列 name

我显然必须使用UPDATESET,但在大多数情况下,我看到人们也在使用INNER JOIN。就我个人而言,我想知道是否有更简单的方法来做到这一点(不使用INNER JOIN),而我错过了它?

最佳答案

使用内部联接进行更新,例如:

update people
inner join names on people.id = names.id 
set people.name = names.name

最简单,也更清晰、紧凑和富有表现力。

其他方法通常需要基于 where 条件进行子选择或隐式连接。在一种情况下,查询更加冗长,而在第二种情况下,查询更加困惑,而且性能通常较低。

关于mysql - 使用另一个表的列中的值更新表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49320494/

相关文章:

php - 为什么 MySQL 连接到 localhost 时是 "Writing to net"?

java - SQL异常 : Could not retrieve transation read-only status server

mysql - 选择列会打乱行的顺序

mysql - TIME_TO_SEC ? SEC_TO_TIME

php - 如何使用 PHP 将图像名称数组动态存储到数据库中

mysql - MySQL 中的 InnoDB 和 MyISAM 是什么?

php - Kohana 3 ORM 更改数据库

php - 如何在php中保存sql查询的值?

php - Href V/s 表格提交

mysql - 如何显示50个数据库中的特定列?