【发布时间】:2011-11-22 08:00:33
【问题描述】:
我有一个这样的查询:
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”
如果我有 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 来获得它,但是我遇到了另一个问题:
如果我有两个具有相同标题的图像,其中一个被省略,然后我得到类似:
images_id = "7,3,5"
images_title = "Title7and3,Title5"
所以我错过了 images_id 和 images_title 之间的关系。
有人知道是否可以在 MySQL 中进行此查询吗?
也许我在没有任何实际好处的情况下使一切复杂化。 由于性能原因,我只尝试执行一个查询,但现在我不确定执行两个查询是否更快(例如一个用于选择构面,另一个用于图像)。
请说明您认为最好的解决方案是什么以及为什么。
谢谢!
【问题讨论】:
标签: mysql group-concat