您好我对实现这一目标的最佳方式感到困惑。到目前为止,我的查询如下。
基本上我现在有一个属于多个媒体组的图像。如果媒体组只有一个与之关联的图像,我想要带回的是图像的随机媒体组。
例如,如果我有图像1,2,3
图像1属于媒体组10,11,12 图像2属于媒体组13,14,15 和图像三属于媒体组15,16,17
我想在这个例子中带回来的是
图像1 - 媒体组11 图像2 - 媒体组13 图3 - 媒体组15
我希望图像三是15,因为15有两个与之相关的图像,所以想把它带回来。请您告诉我实现这一理想结果的最佳方式。
SELECT image_id, media_group_id, COUNT(*) as image_count FROM image_media_group
GROUP BY media_group_id
例如上面的查询带回下面的内容。如果媒体组中只有一个图像,我不想为每个媒体组带回image_id 1432 我对媒体组所有结果的较大查询如下
SELECT T.guid_id, T.id, mg.name, mg.alias_title, T.title, T.hits, al.title, T.distance, uf.real_name, uf.user_name,mg.alias_title,
COUNT(1) as image_count
FROM
(SELECT imx.id,imx.distance, imx.guid_id, imx.user_id, imx.hits, imx.title, imx.visible, imx.approved, imx.advertise_to
FROM image imx
ORDER BY floor(RAND()*(SELECT count(1) FROM image))
) AS T
INNER JOIN image_media_group img ON T.id = img.image_id
INNER JOIN media_group_title mg ON img.media_group_id =mg.media_group_id
INNER JOIN album_image ai ON T.id = ai.image_id
INNER JOIN album al ON ai.album_id = al.id
INNER JOIN user us ON T.user_id = us.id
LEFT JOIN user_flickr uf ON us.flickr_id = uf.id
LEFT JOIN user_site uss ON us.user_site_id= uss.id
WHERE T.visible = in_image_visible
AND T.approved = in_image_approved
AND (T.advertise_to <= in_date_time_now OR T.advertise_to IS NULL)
GROUP BY img.media_group_id;
我试图在上面的image_media_group查询中实现所需的结果,因为我正在考虑更改主查询中的连接以包含此