订单子句中的未知列

时间:2013-06-26 05:39:12

标签: mysql phpmyadmin

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

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

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

5 个答案:

答案 0 :(得分:10)

要解决此问题,请使用SELECT p.* FROM代替SELECT * FROM

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

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

答案 1 :(得分:5)

由于您发布了部分查询,因此从一开始就不明显,但您的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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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