【问题标题】:Using MySQL: Update field with values using Inner Join使用 MySQL:使用内部联接使用值更新字段
【发布时间】:2012-12-22 21:49:46
【问题描述】:

我有一个主表和一个索引表。两个表共享一个名为“L_Status”的公共主字段。我想根据索引表中名为“status”的引用将主表中的数据从“L_Status”值(整数)更新为“L_StatusLV”(可读文本值)。这是我在 PHPmyAdmin 中输入的代码:

UPDATE markers.L_Status 
FROM markers
INNER JOIN STATUS ON markers.L_Status = status.L_Status
WHERE  markers.L_Status = status.L_StatusLV

PHPmyAdmin 返回以下错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 2 行的“FROM 标记 INNER JOIN STATUS ON 标记。L_Status = status.L_Status WHERE ma”附近使用

关于这里的语法错误有什么建议吗?

【问题讨论】:

  • 应该得到'status'表中主键(L_Status)的文本值对。

标签: mysql join


【解决方案1】:

MySQL 的 UPDATE JOIN 语法与 SQL Server 的不同(看起来像你所拥有的):

UPDATE
  /* First join the tables */
  markers 
  INNER JOIN status ON markers.L_Status = status.L_Status
/* Then specify the new value in the SET clause */
SET markers.L_Status = status.L_StatusLV

但是,正如您在上面提到的,当前值是整数。如果markers.L_Status 列是INT 列而不是CHAR/VARCHAR,我认为这是人类可读的列,这将不起作用。

访问MySQL's UPDATE syntax reference 了解完整的语法细节。特别是 table_references.

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 2023-03-07
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2022-07-27
    • 2016-03-21
    相关资源
    最近更新 更多