MySQL根据表2的INNER JOIN结果更新表1中的列

标签 mysql sql inner-join

我正在 mysql 表之间移动数据。我正在尝试进行内部联接,然后将公司表中的columnX 镜像到人员表中的columnX。

UPDATE people
INNER JOIN company on people.currCompId=company.itemId
SET people.companyId = company.id;

尽管我在另一个表上进行了类似的联接并成功地移动了数据,但这不起作用。因此,我尝试使用相同的联接来执行简单的 SELECT 语句,但它也不起作用:

SELECT people.fullName, company.id
from people
INNER JOIN company on people.currCompId=company.itemId;

如果有人可以解释为什么 update 语句无法更新任何内容以及为什么 select 语句不返回任何内容。

people.currCompId 和 company.itemId 都定义为 VARCHAR(50),并且它们都包含诸如“255A7C76-A6F0-40B5-ADBA-DE290B4GG5A1”之类的数据,这两列具有相同的数据源,因此我会预计它会加入。

最佳答案

它不更新任何记录的原因是因为不匹配任何行。例如。以下不应返回任何记录:

SELECT *
FROM people
INNER JOIN company on people.currCompId=company.itemId;

这可能是因为查询尝试将 companyIditemId 连接?难道不应该将 people.currComId 加入到 company.id 中吗?

更新

根据示例(在更新的问题中),看起来 companyIditemId 都在 UUID 中。格式..如果两个表都有一些记录,那么我建议更多地了解如何将数据插入到这些表中。如果 CompanyItem 使用不同的 UUID(看起来像),那么它们将不匹配,因为 UUID 几乎总是唯一的。

关于MySQL根据表2的INNER JOIN结果更新表1中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886426/

相关文章:

MySQL Slow LEFT JOIN Query 使用派生查询进行连接时

sql - ORDER BY 是否应该影响返回 SELECT 查询的行数?

mysql - 在只有几行的表中索引字符串字段是否有意义

sql - 内连接创建重复列

带有 LIMIT 按降序排列的 MySQL 查询不适用于内部联合表

mysql - 重写这个mysql语句

MySQL : Insert into. .. 从...中选择重复键

mysql - 如何在mysql中对同一个表和不同的group by使用联合查询?

mysql union,得到2条信息

mysql - 电子商务的数据库设计问题