【问题标题】:Unknown column in order clauseorder 子句中的未知列
【发布时间】:2013-06-23 03:12:03
【问题描述】:

#1054 - Unknown column 'default_ps_products.manufacturer_id' in 'order clause'

为什么我在下面的语句中出现上述错误,如果语句中没有 p 并且我没有使用 order 子句,它可以正常工作?

SELECT * FROM `default_ps_products` p WHERE p.`manufacturer_id` = 2

【问题讨论】:

  • 您需要使用ALIAS 而不是表名,因为您已经在表上定义了别名。例如p.manufacturer_id
  • @JW웃 我试过SELECT * FROM default_ps_products` p WHERE p.manufacturer_id = 2` 还是一样的错误
  • 如果没有实际的ORDER BY,我看不出您收到此消息的原因。您确定这是您收到错误时正在执行的实际查询吗?
  • 您使用的是反引号还是单引号?你能发布整个查询吗?
  • @JessMcKenzie 如果您为表格设置别名p,您还需要ORDER BY p.manufacturer_id。您实际上删除了名称default_ps_products 并添加了名称p,因此需要更改对default_ps_products所有 引用。

标签: mysql phpmyadmin


【解决方案1】:

要解决此问题,请使用 SELECT p.* FROM 而不是 SELECT * FROM

原因是 phpMyAdmin 将 ORDER BY 添加到您对结果网格中第一列的查询中。由于别名的原因,执行此操作的代码会失败。

此问题在 phpMyAdmin 4.0.6 上重现。不知道最新4.2.5的状态

【讨论】:

  • 即使没有 ORDER BY 子句,也会出现此错误。这个答案解决了这个问题; Isaksson 的回答没有。
【解决方案2】:

由于您发布了部分查询,这从一开始就并不明显,但您的full query 说明了这一点;

SELECT *
FROM default_ps_products
WHERE manufacturer_id=2
ORDER BY `default_ps_products`.`manufacturer_id` ASC
LIMIT 0, 30

当您在 select 中为 default_ps_products 表添加别名时,您不能选择性地仅在 WHERE 子句中使用别名,您还需要更改 ORDER BY 以使用相同的别名。换句话说,完整的查询应该是;

SELECT *
FROM default_ps_products p
WHERE p.manufacturer_id=2
ORDER BY p.`manufacturer_id` ASC
LIMIT 0, 30

【讨论】:

    【解决方案3】:

    打开你的 phpmyadmin。单击您选择的数据库。现在您在右侧有一个所有表格的列表。单击default_ps_products 表的结构。现在你看到了它的结构。现在单击 SQL 选项卡并以“SELECT * FROM default_ps_products ORDER BY”的形式执行查询。 执行此查询后,立即解决您的问题。

    【讨论】:

      【解决方案4】:

      您的查询很好。运行此查询时没有任何错误。查询没有错。

      SELECT * FROM default_ps_products AS p WHERE p.manufacturer_id = 2 它工作正常。:)

      【讨论】:

        【解决方案5】:

        使用@Query(nativeQuery = true)时,应使用下划线格式,如"Sort.by(Sort.Direction.DESC, "update_time")))",否则应在实体中使用骆驼属性,如"Sort.by(Sort.Direction.DESC, "updateTime")))"

        【讨论】:

          【解决方案6】:

          phpmyadmin 突然开始在一张桌子上显示此错误。唯一的解决方法是将列 id 重命名为 id2 然后返回。即使删除表格并制作新副本也无济于事

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-06-11
            • 1970-01-01
            • 2011-06-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多