Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用另一个映射表更新数据库中列的值?(MySQL)_Mysql_Database - Fatal编程技术网

如何使用另一个映射表更新数据库中列的值?(MySQL)

如何使用另一个映射表更新数据库中列的值?(MySQL),mysql,database,Mysql,Database,假设我有以下表格 表1 表2(映射表) 我试图实现的结果: 表1 。 . (也就是说,使用单个查询更新整个表,因为我有一个由数百万行组成的表) 我尝试在SQL中使用子查询,但似乎无法处理子查询返回多行的情况 提前感谢您可以使用内部联接查询 update table1 t1 join mapping_table t2 on t1.tag_id = t2.old_tag_id set t1.tag_id = t2.new_tag_id UPDATE table1 a INNER JOIN tabl

假设我有以下表格

表1 表2(映射表) 我试图实现的结果:

表1 。 .

(也就是说,使用单个查询更新整个表,因为我有一个由数百万行组成的表)

我尝试在SQL中使用子查询,但似乎无法处理子查询返回多行的情况


提前感谢

您可以使用
内部联接
查询

update table1 t1
join mapping_table t2 on t1.tag_id = t2.old_tag_id
set t1.tag_id = t2.new_tag_id
UPDATE table1 a
INNER JOIN table2 b
ON a.tag_id = b.old_tag_id
SET a.tag_id = b.new_tag_id

您可以使用
内部联接
查询

UPDATE table1 a
INNER JOIN table2 b
ON a.tag_id = b.old_tag_id
SET a.tag_id = b.new_tag_id

你能试试下面的查询吗

UPDATE Table1 t1 
SET t1.tag_id = (SELECT t2.new_tag_id 
              FROM Table2 t2
              WHERE t1.tag_id = t2.old_tag_id)

你能试试下面的查询吗

UPDATE Table1 t1 
SET t1.tag_id = (SELECT t2.new_tag_id 
              FROM Table2 t2
              WHERE t1.tag_id = t2.old_tag_id)

谢谢你@Fabio。它就像一个符咒。另外,你能提到一些你认为可以提高我查询技能的相关知识吗?这只是更新查询。其他问题呢?我根本不知道如何在更新中使用内部连接。我希望能够熟练地使用它们。Youncan可以参考手册,这里还有一个很好的连接视觉解释谢谢@Fabio。它就像一个符咒。另外,你能提到一些你认为可以提高我查询技能的相关知识吗?这只是更新查询。其他问题呢?我根本不知道如何在更新中使用内部连接。我希望能够熟练地使用它们。Youncan可以参考手册,这里还有一个很好的连接视觉解释
UPDATE Table1 t1 
SET t1.tag_id = (SELECT t2.new_tag_id 
              FROM Table2 t2
              WHERE t1.tag_id = t2.old_tag_id)