我有一个包含随机名称的表(以及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。我想使用表name
的{{1}}列中的名称更新表people
的列name
。
我显然必须使用names
和UPDATE
,但在大多数情况下,我看到人们也在使用SET
。就个人而言,我想知道是否有更简单的方法(不使用INNER JOIN
)并且我错过了它?
答案 0 :(得分:0)
使用内部联接进行更新,例如:
update people
inner join names on people.id = names.id
set people.name = names.name
最简单,也更清晰,更紧凑,更具表现力。
其他方法通常需要根据where条件进行subselect或隐式连接。在一种情况下,查询更具有verbouse,而在第二种情况下,查询更加困惑,而且性能往往较差。