mySQL将多个结果放入一个结果行

时间:2012-08-22 23:34:31

标签: mysql

我有一个按产品ID存储图像URL的表,我正在尝试编写一个查询,将所有图像结果拉到一行。该表看起来像:

photoFlag photoName objectID

其中photoName保存图像的相对路径,photoFlag标识图像的类型(完整,拇指等)。我开始编写一个快速查询来获取两个图像(带有不同的标记)。这就是我所拥有的:

select t2.pic, t4.pic, t2.id from
 (select p2.photoName as pic, p2.objectID as id from ds_photos as p2 where p2.photoFlag = 2) as t2,
 (select p4.photoName as pic, p4.objectID as id from ds_photos as p4 where p4.photoFlag = 4) as t4
where t2.id=t4.id

这似乎是一个正确的查询,但是当我通过phpMyAdmin执行时,它永远不会返回结果并在“SHOW PROCESS”列表中无限期地显示(好,至少大约40分钟)。有没有我错的东西,我在这里没有看到导致无限循环?

理想情况下,我想只抓取photoFlag = 2的图片(有些产品有多个图像)并将它们放入同一行,但我不知道从哪里开始。有什么建议吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

使用:GROUP_CONCAT

SELECT id, GROUP_CONCAT(photoName ) As pic 
FROM ds_photos 
WHERE (photoFlag = 2 or photoFlag = 4) and id = ?;
GROUP BY id

?替换为您想要的ID。