Php 如何通过连接另一个表来更新MySQL表列
我有两个MySQL表 表1(待更新): 表2(待合并): 我想通过将表2中的ID添加到“NEW_ID”列来更新表1。这是有原因的,而不是让表继续连接 我尝试了几个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
$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;