我有两张有结构的桌子
Table1
------
No | Name | IDNo | HouseNoBlock
Table2
------
IDNo | HouseNo | Block我试图用HouseNoBlock连接的值更新第一个表的HouseNo/Block列,同时比较IDNo。我能够使用查询获得值。
SELECT CONCAT(table2.HouseNo,'/',table2.Block)
FROM table2 ,table1
WHERE table1.IDNo = table2.IDNo但是当我尝试UPDATE table1时,我得到了Syntax error ERROR 1064 (42000)。
UPDATE table1
SET HouseNoBlock = CONCAT (table2.HouseNo,'/',table2.Block)
FROM table2 ,table1
WHERE table1.IDNo = table2.IDNo有人能帮忙吗?
发布于 2018-03-22 17:53:16
由于您没有提供任何数据,我准备了下一个示例:
create table tbl1 (No int, Name varchar(200), IDNo int, HouseNoBlock varchar(200));
create table tbl2 (IDNo int, HouseNo varchar(100), Block varchar(100));
insert into tbl1 values
(1, 'Name1', 1, null),
(2, 'Name2', 2, null),
(3, 'Name3', 1, null);
insert into tbl2 values
(1, 'House1', 'Block1'),
(2, 'House2', 'Block2');使用下一句:
UPDATE tbl1 --< first the table that will be updated
JOIN tbl2
ON tbl1.IDNo = tbl2.IDNo
SET HouseNoBlock = CONCAT(tbl2.HouseNo,'/',tbl2.Block);这是最后的结果:
No | Name | IDNo | HouseNoBlock
-: | :---- | ---: | :------------
1 | Name1 | 1 | House1/Block1
2 | Name2 | 2 | House2/Block2
3 | Name3 | 1 | House1/Block1dbfiddle 这里
查看有关更新语法的MySQL文档:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]对于多表语法,更新在table_references中命名的每个表中满足条件的行。每个匹配行都会被更新一次,即使它多次匹配条件。对于多表语法,不能使用ORDER和LIMIT .
https://dba.stackexchange.com/questions/202032
复制相似问题