Mysql group by中联接表的Order by最大值
我需要完成对4个表的查询Mysql group by中联接表的Order by最大值,mysql,sql,Mysql,Sql,我需要完成对4个表的查询 图片:id 标签:id,name TagImages:image\u id,tag\u id(图像和标记的外键) 彩色图像:图像id、十六进制、值(图像外键) 我想得到类似的图像,有共同的标签和颜色。图像应至少有一个通用标签,但顺序相似的颜色 我编写了标签相似性查询,如下所示: SELECT TagImages.imageId , count(*) AS q FROM TagImages Join colorImages ON colorImages.imageI
- 图片:id
- 标签:id,name
- TagImages:image\u id,tag\u id(图像和标记的外键)
- 彩色图像:图像id、十六进制、值(图像外键)
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
它可以很好地工作,但它需要添加颜色“orderby”,以便根据目标图像的颜色对图像进行排序。ColorImages表有一个名为value的列,该列表示该颜色在图像中的百分比,因此最好使用值最高的颜色对图像进行排序 不用研究表结构和数据,我就可以展示这个,如果你把表结构和少量数据脚本放在一起,我们就可以使用它,并且可以得到所需的结果
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
图像与彩色图像的关系是什么?1:1,1:n,m:n?“相似图像”的定义是什么?1:n-每个图像都有一些颜色扫描您解释where子句您需要所有imageid=41和外部子查询您说的imageid=41,这是什么意思?它可以是=41,也可以不是=41,第二步将colorImages表中的该列添加到select中,并按顺序将其包括在内。如果我能看到数据或表结构,就可以编写准确的sql