Mysql 正确的select语句

Mysql 正确的select语句,mysql,phpmyadmin,Mysql,Phpmyadmin,我有一张名为ps_product_supplier的表格: 我想选择产品\供应商\引用不止一次的所有产品,如果它出现在主产品id \产品\属性=0和组合上 我尝试了此选择,但没有得到任何结果: SELECT `id_product_supplier`, `id_product`, `id_product_attribute`, `product_supplier_reference`, COUNT(`product_supplier_reference`) FROM `ps_produc

我有一张名为ps_product_supplier的表格:

我想选择产品\供应商\引用不止一次的所有产品,如果它出现在主产品id \产品\属性=0和组合上

我尝试了此选择,但没有得到任何结果:

SELECT `id_product_supplier`, `id_product`, `id_product_attribute`,
    `product_supplier_reference`, COUNT(`product_supplier_reference`)
FROM `ps_product_supplier`
GROUP BY `id_product`
HAVING COUNT(`product_supplier_reference`) > 1
    AND `id_product_attribute` = 0
    AND `product_supplier_reference` > 0
但正如你在图片上看到的,我应该在那里找到一个,因为产品供应商在id产品供应商1426和4210上的参考是相同的


有人能帮我吗?

您需要将所有列添加到group by子句中,这样它才能工作:

SELECT `id_product_supplier` , `id_product` , 
       `product_supplier_reference` , COUNT( `product_supplier_reference` )
FROM `ps_product_supplier`
WHERE `product_supplier_reference` >0
GROUP BY `id_product`,`id_product_supplier`,`product_supplier_reference`  
HAVING COUNT( `product_supplier_reference` ) >1

您需要将所有列添加到group by子句中,以使其正常工作:

SELECT `id_product_supplier` , `id_product` , 
       `product_supplier_reference` , COUNT( `product_supplier_reference` )
FROM `ps_product_supplier`
WHERE `product_supplier_reference` >0
GROUP BY `id_product`,`id_product_supplier`,`product_supplier_reference`  
HAVING COUNT( `product_supplier_reference` ) >1

您需要减少select子句中列出的列数这将减少行数或向group by子句中添加更多列名这将增加行数或对更多列使用聚合函数

请注意,HAVING子句是为计算聚合值而设计的,您仍然可以使用WHERE子句进行on-aggregated筛选

## least rows
SELECT `id_product`
       Count(`product_supplier_reference`) 
FROM   `ps_product_supplier` 
WHERE  `id_product_attribute` = 0 
       AND `product_supplier_reference` > 0 
GROUP  BY `id_product`
HAVING Count(`product_supplier_reference`) > 1 


您需要减少select子句中列出的列数这将减少行数或向group by子句中添加更多列名这将增加行数或对更多列使用聚合函数

请注意,HAVING子句是为计算聚合值而设计的,您仍然可以使用WHERE子句进行on-aggregated筛选

## least rows
SELECT `id_product`
       Count(`product_supplier_reference`) 
FROM   `ps_product_supplier` 
WHERE  `id_product_attribute` = 0 
       AND `product_supplier_reference` > 0 
GROUP  BY `id_product`
HAVING Count(`product_supplier_reference`) > 1 


谢谢,但我仍然得到一个0的结果与此查询mySQL returnerade ett tomt结果dvs英加雷达。Frågan tog 0.0104 sek选择id_产品_供应商、id_产品、id_产品_属性、产品_供应商_参考,从ps_产品_供应商中计算产品_供应商_参考,其中id_产品_属性=0,产品_参考>0,按id_产品、id_产品_供应商、id_产品_属性分组,产品供应商参考号的计数产品供应商参考号>1限制0,30谢谢,但我仍然得到了0结果与此查询MySQL returnerade ett tomt resultat dvs inga rader。Frågan tog 0.0104 sek选择id_产品_供应商、id_产品、id_产品_属性、产品_供应商_参考,从ps_产品_供应商中计算产品_供应商_参考,其中id_产品_属性=0,产品_参考>0,按id_产品、id_产品_供应商、id_产品_属性分组,产品\u供应商\u引用计数产品\u供应商\u引用>1限制0,301064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用ps_product_supplier中的“Countproduct_supplier_”参考的正确语法,其中第2行的“id_pr”仍然通过删除可能不正确的列名而更改了0结果。然而,由于我不知道你们表格的细节,我无法解读所有的错误。我回答的要点是,按较少的列分组=较少的行,反之亦然。但是se有效列名称。1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用ps_product_supplier中的“Countproduct_supplier_”参考的正确语法,其中第2行的“id_pr”仍然通过删除可能不正确的列名而更改了0结果。然而,由于我不知道你们表格的细节,我无法解读所有的错误。我回答的要点是,按较少的列分组=较少的行,反之亦然。但这些都是有效的列名称。