【问题标题】:MySQL copy values to another tableMySQL 将值复制到另一个表
【发布时间】:2016-10-25 13:00:43
【问题描述】:

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

但是

您的 SQL 语法有错误; ...在'FROM 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));

【问题讨论】:

  • 在UPDATE语法下查看手册

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


【解决方案1】:

你应该使用

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

您的查询是针对 SQL Server,而不是针对 My SQL。您应该使用别名来进行简短易读的查询。

【讨论】:

  • 成功了!谢谢!
【解决方案2】:

使用这段代码,mysql和sql server有语法上的区别:

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

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 2012-08-12
    • 2016-12-05
    • 2011-11-21
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    相关资源
    最近更新 更多