我有这个问题:
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的初学者。 谢谢。
答案 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