我需要将 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/