Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql group by中联接表的Order by最大值_Mysql_Sql - Fatal编程技术网

Mysql group by中联接表的Order by最大值

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

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

  • 图片: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