我有以下疑问:
SELECT p.product_id , p.product_slug , p.product_name , c.category_slug
FROM products p
INNER JOIN product_category_relations pcr ON pcr.relations_product_id = p.product_id
INNER JOIN categories c ON c.category_id = pcr.relations_category_id
GROUP BY p.product_id
ORDER BY p.product_id
错误:
1055-select list的表达式#4不在group by子句中,并且包含未聚合列“c.category_slug”,该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容
一个产品可以有多个关系/类别 INNER JOIN categories c ON c.category_id = pcr.relations_category_id
,我只想抢第一个。
如何通过一个查询实现这一点?
例子:
1条答案
按热度按时间jdzmm42g1#
您可能需要在非产品列上使用聚合函数
group_concat()
:一般来说
SELECT
列必须与GROUP BY
钥匙。事实上,这种不匹配导致了你的错误。在这个查询中,特别允许不匹配,因为
product_id
是的主键products
. 按主键(或任何唯一键)聚合时,可以选择其他列。不过,你可以明确地说: