MySQL 从 2 个不同的表更新

标签 mysql sql sql-update


我有一个名为 auto 的表,其中包含汽车数据(汽车从荷兰语到英语的意思是汽车),如下所示:

+----------+---------------+------------------+------------------+------------------+--------------+----------+----------------+
| Kenteken | Merk          | Type             | Aantal Cilinders | Chassis nummer   | Motor nummer | Eigenaar | Telefoonnummer |
+----------+---------------+------------------+------------------+------------------+--------------+----------+----------------+

“Eigenaar”在荷兰语到英语中是所有者的意思。
该表中没有注册所有者。
所有者的姓名位于另一个名为“客户”的表中。
这是客户端或“clienten”表的样子:

+----------------------+------+--------------+----------------------+----------------------------+----------+----------------------------+
| Naam                 | ID   | t.a.v        | Voornaam             | Adres                      | Postcode | Woonplaats                 |
+----------------------+------+--------------+----------------------+----------------------------+----------+----------------------------+

在此表中,所有客户端都有一个 ID。
客户与他们的汽车在另一个表中链接。
该表在荷兰语中称为关系或“关系”。
该表的外观如下:

+----------+------+
| Kenteken | ID   |
+----------+------+

例如,如果 ID 为 1 的客户端拥有一辆车牌号为“123-1230”的汽车,则表格如下所示:

+----------+------+
| Kenteken | ID   |
+----------+------+
| 123-1230 |    1 |

Kenteken 在英语中是车牌的意思。
我的目标是更新 auto.Eigenaar 中的所有行 这是我到目前为止所拥有的:

UPDATE auto SET Eigenaar = 
    (SELECT Naam FROM clienten WHERE ID IN (
        SELECT ID FROM relatie LEFT JOIN auto ON relatie.Kenteken = auto.Kenteken
        )    
    ) WHERE Kenteken IN (
        SELECT Kenteken FROM relatie WHERE ID IN (
            SELECT ID FROM relatie LEFT JOIN auto ON relatie.Kenteken = auto.Kenteken
        )
        LIMIT 1
    )

我不知道下一步该做什么。
有谁知道如何做到这一点?
谨致问候,

最佳答案

您可以通过连接 3 个表来实现:

UPDATE auto a
INNER JOIN relatie r ON r.Kenteken = a.Kenteken
INNER JOIN clienten c ON c.ID = r.ID
SET a.Eigenaar = c.Naam

首先,将表 auto 连接到表 relatie 的列 Kenteken,然后连接表 relatie到表 clientenID 列中,您可以从列 Naam 中获取客户端的名称。
请注意,对于关系数据库,不建议将客户/所有者的名称存储在表 auto 中。您应该存储的是 ID,就像您在表 relatie 中所做的那样。

关于MySQL 从 2 个不同的表更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59532746/

相关文章:

mysql - 在 MySQL 中计数并循环它

php - SQL FULL JOIN 语法问题

php - 按最常见的类别(Mysql、Php)选择顺序

sql - 在另一个表 SQL Server 2008 中使用来自 SELECT 的 UPDATE 语句覆盖 ID 值

postgresql - 检测更新不会更改行的触发器

java - 无法使用 Java 在 MySQL 中创建表

mysql - 需要左连接吗? WHERE 条件的行为类似于 INNER JOIN

php - Laravel sql 获取顶部记录并获取其字段值平均值

php - 更新查询不起作用

mysql - 全文搜索查询mysql