我有一个类似这样的查询:
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
查询可以工作,但不是预期的那样,因为如果我有一个有5个面和1个图像的产品(假设有一张带有id=7的图像),那么我在“images_id”中会得到如下所示:
“7,7,7,7”
如果我有两个图像(7和3),那么我会得到如下内容:
"7,7,7,7,7,3,3,3,3,3"
在facets中,我得到了如下内容:
"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来获得它,但是我还有另一个问题:如果我有两个具有相同标题的图像,其中一个被省略了,然后我会得到类似于:
images_id = "7,3,5“
images_title = "Title7and3,Title5“
所以我很怀念images_id和images_title之间的关系。
有没有人知道是否可以在MySQL中进行这个查询?
也许我把所有的事情都复杂化了,却没有任何真正的好处。我试着只执行一个查询,因为性能,但现在我不确定执行两个查询是否更快(例如,一个用于选择面,另一个用于图像)。
请解释一下您认为最好的解决方案是什么,以及为什么。
谢谢!
https://stackoverflow.com/questions/7506750
复制相似问题