11

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

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

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

6 回答 6

10

为了解决这个使用SELECT p.* FROM而不是SELECT * FROM.

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

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

于 2014-07-02T14:38:11.660 回答
7

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

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

当您在选择表中添加别名时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
于 2013-06-26T06:10:25.647 回答
2

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

于 2015-07-15T07:32:33.613 回答
1

你的查询没问题。运行此查询时没有任何错误。查询没有错。

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

于 2013-06-26T05:49:08.763 回答
0

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

于 2021-08-09T10:39:00.670 回答
0

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

于 2019-07-03T04:01:18.347 回答