【问题标题】:How to update MySQL table column by joining with another table如何通过加入另一个表来更新 MySQL 表列
【发布时间】:2015-11-20 19:52:20
【问题描述】:

我有 2 个 MySQL 表。

Table_1(待更新):

ID LINK NEW_ID
 1 4866
 2 1790
 3 7723

Table_2(待加入):

ID LINK
47 1790
49 4866
51 7723

我想通过将表 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' 进行更新

【问题讨论】:

  • 我收到错误...什么错误?我没有看到。
  • 使用连接来限制查询结果是不好的做法。如果您只想限制结果,请使用 where 子句。 WHERE LINK=Table_1.LINK
  • 您正在子查询中从 table_1 中进行选择,这意味着从外部 update 的角度来看它已被有效锁定。您可以在更新级别进行连接。 update table_1 set new_id=table_2.id left join table_2 on table_1.link = table_2.link

标签: php mysql mysqli left-join


【解决方案1】:
UPDATE Table_1 a
JOIN Table_2 b
   ON a.LINK = b.LINK
set a.NEW_ID = b.ID
where a.LINK=b.LINK;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2021-12-03
    • 2011-05-23
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多