MySQL将值复制到另一个表

时间:2016-10-25 13:00:44

标签: mysql sql join syntax-error inner-join

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

2 个答案:

答案 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;