#1054 - Unknown column 'default_ps_products.manufacturer_id' in 'order clause'
为什么我在下面的语句中出现上述错误,如果没有p
in 语句并且我没有使用 order 子句,它可以正常工作?
SELECT * FROM `default_ps_products` p WHERE p.`manufacturer_id` = 2
#1054 - Unknown column 'default_ps_products.manufacturer_id' in 'order clause'
为什么我在下面的语句中出现上述错误,如果没有p
in 语句并且我没有使用 order 子句,它可以正常工作?
SELECT * FROM `default_ps_products` p WHERE p.`manufacturer_id` = 2
为了解决这个使用SELECT p.* FROM
而不是SELECT * FROM
.
原因是 phpMyAdmin 将 ORDER BY 添加到您对结果网格中第一列的查询中。由于别名的原因,执行此操作的代码会失败。
此问题在 phpMyAdmin 4.0.6 上重现。我不知道最新的 4.2.5 的状态
由于您发布了部分查询,这从一开始就并不明显,但您的完整查询说明了这一点;
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
打开你的 phpmyadmin。单击您选择的数据库。现在您在右侧有一个所有表格的列表。单击default_ps_products
表的结构。现在你看到了它的结构。现在单击 SQL 选项卡并以“SELECT * FROM default_ps_products ORDER BY”的形式执行查询。执行此查询后,现在解决您的问题。
你的查询没问题。运行此查询时没有任何错误。查询没有错。
SELECT * FROM default_ps_products AS p WHERE p.manufacturer_id = 2
它工作正常。:)
phpmyadmin 突然开始在一张桌子上显示此错误。唯一的解决方法是将列 id 重命名为 id2 然后返回。即使删除表格并制作新副本也无济于事
使用时@Query(nativeQuery = true)
,应该使用下划线格式,就像这样"Sort.by(Sort.Direction.DESC, "update_time")))"
,否则应该在实体中使用骆驼属性,像这样"Sort.by(Sort.Direction.DESC, "updateTime")))"