按组中的联接表的最大值排序

时间:2017-12-01 08:38:34

标签: mysql sql

我需要完成对4个表的查询

  • 图片:id

  • 标签:id,name

  • TagImages:image_id,tag_id(图像和标签的外键)

  • ColorImages:image_id,hex,value(图像的外键)

我希望获得具有共同标签和颜色的类似图像。图像应至少有一个共同的标签,但按相似颜色排序。

我写了这样的标签相似性查询:

SELECT TagImages.imageId , count(*) AS q
FROM TagImages 
Join colorImages ON colorImages.imageId = TagImages.imageId
WHERE TagImages.tagId IN (
    SELECT TagImages.tagId 
    FROM TagImages 
    WHERE TagImages.imageId=41
) 
AND TagImages.imageId!=41 
GROUP BY TagImages.imageId 
ORDER BY q DESC

它工作正常,但它需要添加颜色'order by',用目标图像的颜色对图像进行排序。 ColorImages表有一个名为value的列,表示图像中该颜色的百分比,因此最好使用值最高的颜色对图像进行排序。

1 个答案:

答案 0 :(得分:0)

没有查看表结构和数据我可以提出这个并且它应该可以工作,如果你把表结构与一点数据脚本放在一起,这样我们就可以使用它并且可以带来所需的结果。

SELECT TagImages.imageId , count(*) AS q, ColorImage.value
FROM TagImages 
Join colorImages ON colorImages.imageId = TagImages.imageId
WHERE TagImages.imageId=41 
GROUP BY TagImages.imageId, ColorImage.value 
ORDER BY q DESC, ColorImage.value