#1054 - Unknown column 'default_ps_products.manufacturer_id' in 'order clause'
为什么我在下面的语句中得到上述错误,如果没有语句中的p
并且我没有使用订单子句,它可以正常工作?
SELECT * FROM `default_ps_products` p WHERE p.`manufacturer_id` = 2
答案 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 然后返回。即使删除表格并制作新副本也无济于事