MySQL 将值复制到另一个表

标签 mysql sql join syntax-error inner-join

我需要将 Klient_ID 值从表(Klient)复制到表(Kliendikaart)。命令应通过正确的名字('Eesnimi')选择 ID。我尝试了这个命令:

UPDATE Kliendikaart
SET Kliendikaart.Klient_ID = Klient.Klient_ID
FROM Kliendikaart
INNER JOIN Klient ON Kliendikaart.Eesnimi = Klient.Eesnimi;

但是

You have an error in your SQL syntax; ... near 'FROM Kliendikaart INNER JOIN Klient ON Kliendikaart.Eesnimi = Klient.Eesnimi' at line 1

表格:

select * from Kliendikaart;
+-----------------+-----------+---------+----------+
| Kliendikaart_ID | Klient_ID | Eesnimi | Perenimi |
+-----------------+-----------+---------+----------+
|               1 |      NULL | Priit   | Triip    |
|               2 |      NULL | Tõnu    | Lepp     |
|               3 |      NULL | Tiit    | Kask     |
|               4 |      NULL | Linda   | Orb      |
|               5 |      NULL | Salme   | Kepp     |
|               6 |      NULL | Iiris   | Toos     |
|               7 |      NULL | Kertu   | Verb     |
|               8 |      NULL | Triinu  | Kolk     |
|               9 |      NULL | Tõnis   | Viip     |
|              10 |      NULL | Taavi   | Kolk     |
+-----------------+-----------+---------+----------+

select * from Klient;
+-----------+---------+----------+
| Klient_ID | Eesnimi | Perenimi |
+-----------+---------+----------+
|         1 | Priit   | Triip    |
|         2 | Tõnu    | Lepp     |
|         3 | Tiit    | Kask     |
|         4 | Linda   | Orb      |
|         5 | Salme   | Kepp     |
|         6 | Iiris   | Toos     |
|         7 | Kertu   | Verb     |
|         8 | Triinu  | Kolk     |
|         9 | Tõnis   | Viip     |
|        10 | Taavi   | Kolk     |
+-----------+---------+----------+

输出应如下所示:

select * from Kliendikaart;
+-----------------+-----------+---------+----------+
| Kliendikaart_ID | Klient_ID | Eesnimi | Perenimi |
+-----------------+-----------+---------+----------+
|               1 |         1 | Priit   | Triip    |
|               2 |         2 | Tõnu    | Lepp     |
|               3 |         3 | Tiit    | Kask     |
|               4 |         4 | Linda   | Orb      |
|               5 |         5 | Salme   | Kepp     |
|               6 |         6 | Iiris   | Toos     |
|               7 |         7 | Kertu   | Verb     |
|               8 |         8 | Triinu  | Kolk     |
|               9 |         9 | Tõnis   | Viip     |
|              10 |        10 | Taavi   | Kolk     |
+-----------------+-----------+---------+----------+

我创建的表使用这些键:

create table Klient(
Klient_ID int unsigned not null auto_increment,
Eesnimi varchar(30) not null,
Perenimi varchar(30) not null,
PRIMARY KEY (Klient_ID));

create table Kliendikaart(
Kliendikaart_ID int unsigned not null auto_increment,
Klient_ID integer unsigned,
Eesnimi varchar(30) not null,
Perenimi varchar(30) not null,
PRIMARY KEY (Kliendikaart_ID),
FOREIGN KEY (Klient_ID) references Klient(Klient_ID));

最佳答案

你应该使用

UPDATE Kliendikaart kd
INNER JOIN Klient k ON kd.Eesnimi = k.Eesnimi
SET kd.Klient_ID = k.Klient_ID;

您的查询针对的是 SQL Server,而不是 My SQL。您应该使用别名来实现简短且易于阅读的查询。

关于MySQL 将值复制到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240694/

相关文章:

mysql - 单表还是多表?

sql - 如何在没有 NULL 结果的情况下连接值(Snowflake)

java - 使用 IN 子句和子选择查询多列的 Hibernate Criteria Query

sql - 简单的SQL查询以选择一个最大值

MYSQL - 将结果集 A 添加到结果集 B?请看我的例子

mysql - SQL LEFT JOIN 与另一列的 where 子句

mysql - 请根据提到的行数告诉我哪个查询是有效的

mysql - 如何将两个查询转换为 INT 并比较它们?

mysql - 插入麻烦

mysql - 根据其他表的连接获取列的计数