我有这样的查询:
SELECT product.id,
GROUP_CONCAT(image.id) AS images_id,
GROUP_CONCAT(image.title) AS images_title,
GROUP_CONCAT(facet.id) AS facets_id
...
GROUP BY product.id
Run Code Online (Sandbox Code Playgroud)
并且查询有效,但不是预期的,因为如果我有一个带有5个facet和1个图像的产品(假设id为7的图像),那么我在"images_id"中得到类似的东西:
"7,7,7, 7,7"
如果我有2张图像(7和3),那么我会得到类似的东西:
"7,7,7,7,7,3,3,3,3,3"
并且在方面我得到类似的东西:
" 8,7,6,5,4,8,7,6,5,4"
我认为MySQL正在对查询返回的不同行进行某种类型的并集,然后连接所有内容.
我的预期结果是(对于最后一个例子):
images_id ="7,3"
facets_id ="8,7,6,5,4"
我可以在GROUP_CONCAT中使用DISTINCT获得它,但后来我有另一个问题:如果我有两个具有相同标题的图像,其中一个是ommited,然后我得到类似的东西:
images_id ="7,3,5"
images_title ="Title7and3,Title5"
所以我想念images_id和images_title之间的关系.
有人知道是否有可能在MySQL中进行此查询?
也许我在没有任何实际好处的情况下使一切变得复杂.我试图只执行一个查询,因为性能,但现在我不太确定它是否更快执行两个查询(一个用于选择构面,另一个用于图像).
请解释一下您认为最佳解决方案是什么以及为什么.
谢谢 !