我需要将Klient_ID值从表(Klient)复制到表(Kliendikaart)。命令应该使用正确的名字选择ID(' Eesnimi')。我试过这个命令:
UPDATE Kliendikaart
SET Kliendikaart.Klient_ID = Klient.Klient_ID
FROM Kliendikaart
INNER JOIN Klient ON Kliendikaart.Eesnimi = Klient.Eesnimi;
但
您的SQL语法有错误; ......靠近Kliendikaart INNER JOIN Klient ON Kliendikaart.Eesnimi = Klient.Eesnimi'在第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));
答案 0 :(得分:2)
你应该使用
UPDATE Kliendikaart kd
INNER JOIN Klient k ON kd.Eesnimi = k.Eesnimi
SET kd.Klient_ID = k.Klient_ID;
您的查询适用于SQL Server,而不适用于My SQL。并且您应该使用别名来进行简短易读的查询。
答案 1 :(得分:0)
使用此代码,mysql和sql server之间存在语法差异:
UPDATE Kliendikaart
INNER JOIN Klient ON Kliendikaart.Eesnimi = Klient.Eesnimi
SET Kliendikaart.Klient_ID = Klient.Klient_ID;