PostgreSQL - 查询错误

时间:2015-11-16 08:54:25

标签: sql postgresql

我有这个问题:

SELECT DISTINCT par.id, par.title, cod.id AS id_codebook, cod.title AS title_codebook
FROM catalog_parameter_codebook cod
JOIN catalog_parameter par ON (par.id=cod.id_parameter)
JOIN catalog_parameter_product_value_parameter_codebook_mm codmm ON (cod.id=codmm.id_parameter_codebook)
JOIN catalog_parameter_product_value pv ON (pv.id=codmm.id_parameter_product_value)
JOIN catalog_product p ON (p.id=pv.id_product)
WHERE p.state=2 AND p.hidden=0 AND par.type=2 AND par.display_in_parameter_search=1 AND par.hidden=0 
ORDER BY par.sorting, cod.title 

我得到了这个错误:

  

第8行:ORDER BY par.sorting,cod.title

     

错误:用于SELECT   DISTINCT,ORDER BY表达式必须出现在选择列表

我是postgreSQL的初学者。 谢谢。

1 个答案:

答案 0 :(得分:2)

作为错误消息状态,par.sorting必须在选择列表中

如果您使用distinct或group by,则您要排序的所有列都必须位于选择列列表中

SELECT DISTINCT par.id, par.title, cod.id AS id_codebook, cod.title AS title_codebook, par.sorting
FROM catalog_parameter_codebook cod
JOIN catalog_parameter par ON (par.id=cod.id_parameter)
JOIN catalog_parameter_product_value_parameter_codebook_mm codmm ON  (cod.id=codmm.id_parameter_codebook)
JOIN catalog_parameter_product_value pv ON (pv.id=codmm.id_parameter_product_value)
JOIN catalog_product p ON (p.id=pv.id_product)
WHERE p.state=2 AND p.hidden=0 AND par.type=2 AND par.display_in_parameter_search=1 AND par.hidden=0 
ORDER BY par.sorting, cod.title