【问题标题】:MySQL: ERROR 1054 (42S22): Unknown column in 'where clause'MySQL:错误 1054 (42S22):“where 子句”中的未知列
【发布时间】:2011-03-22 11:01:27
【问题描述】:

我正在对 WordPress 数据库进行一些更改。我需要将 wp-posts 表的 GUID 字段中的 URL 替换为来自另一个名为 ebdurls 的表的 URL。表的说明如下:

wp_posts:我需要的两个字段的字段类型是:

ID -> bigint(20) 无符号

guid -> varchar(255)

我有需要导出到 wp_posts 的数据的表是这样的:

ebdurls:

标题 -> varchar(255)

url -> varchar(255)

ebdid -> bigint(20) 无符号

一切似乎都是正确的,但是当我应用下一个查询时,它给了我一个我真的无法得到的错误。我尝试在任何地方引用字段、表格等,但没有成功。

mysql> update wp_posts set wp_posts.guid=ebdurls.url where wp_posts.id=ebdurls.ebdid;

错误 1054 (42S22):“where 子句”中的未知列“ebdurls.ebdid”

错在哪里?

【问题讨论】:

    标签: mysql sql sql-update mysql-error-1054


    【解决方案1】:

    您尚未指定 ebdurls 是什么,请在查询中添加 from 语句:

    UPDATE 
        wp_posts, ebdurls
    SET 
        wp_posts.guid = ebdurls.url 
    WHERE 
        wp_posts.id=ebdurls.ebdid;
    

    编辑: 比尔是对的,现在已经修复了格式。哎呀。

    【讨论】:

    • 这是 Microsoft SQL Server 的多表 UPDATE 语法。 MySQL 以不同的方式对子句进行排序。
    • 非常感谢,这就是答案!
    【解决方案2】:

    ebdurls.* 没有价值。这就是导致您的错误的原因。数据库不知道您要做什么。

    您可能需要使用子查询或将此逻辑添加到您的应用程序中。

    或者类似的东西:

    UPDATE wp_posts, ebdurls ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多