Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Php 如何通过连接另一个表来更新MySQL表列_Php_Mysql_Mysqli_Left Join - Fatal编程技术网

Php 如何通过连接另一个表来更新MySQL表列

Php 如何通过连接另一个表来更新MySQL表列,php,mysql,mysqli,left-join,Php,Mysql,Mysqli,Left Join,我有两个MySQL表 表1(待更新): 表2(待合并): 我想通过将表2中的ID添加到“NEW_ID”列来更新表1。这是有原因的,而不是让表继续连接 我尝试了几个MySQL查询,最新的一个如下所示。我会犯错误 $query_string = ' UPDATE Table_1 SET NEW_ID = ( SELECT Table_2.ID FROM Table_2 LEFT JOIN Table_1 ON Table_1.LINK = Table_2.LINK

我有两个MySQL表

表1(待更新):

表2(待合并):

我想通过将表2中的ID添加到“NEW_ID”列来更新表1。这是有原因的,而不是让表继续连接

我尝试了几个MySQL查询,最新的一个如下所示。我会犯错误

$query_string = '
  UPDATE Table_1
  SET NEW_ID = (
    SELECT Table_2.ID
    FROM Table_2
    LEFT JOIN Table_1 ON Table_1.LINK = Table_2.LINK
  )
';
mysqli_query( $GLOBALS['db_link'], $query_string ) or die( mysqli_error( $GLOBALS['db_link'] ) );
错误
您不能为FROM子句中的更新指定目标表“table_1”

I get errors…什么错误?我没有看到。使用联接来限制查询结果是一种不好的做法。如果只想限制结果,请使用where子句
WHERE LINK=Table_1.LINK
您正在子查询中从Table_1进行选择,这意味着从外部
更新的角度来看,它被有效锁定。您可以只在更新级别进行连接<代码>更新表\u 1设置新的\u id=表\u 2.id在表\u 1上左连接表\u 2.link=表\u 2.link
UPDATE Table_1 a
JOIN Table_2 b
   ON a.LINK = b.LINK
set a.NEW_ID = b.ID
where a.LINK=b.LINK;
$query_string = '
  UPDATE Table_1
  SET NEW_ID = (
    SELECT Table_2.ID
    FROM Table_2
    LEFT JOIN Table_1 ON Table_1.LINK = Table_2.LINK
  )
';
mysqli_query( $GLOBALS['db_link'], $query_string ) or die( mysqli_error( $GLOBALS['db_link'] ) );
UPDATE Table_1 a
JOIN Table_2 b
   ON a.LINK = b.LINK
set a.NEW_ID = b.ID
where a.LINK=b.LINK;