我不确定是否正确地说出这个问题。我有一个包含数千个图像ID的SQLite数据库。每张图片都标有一堆字。您的想法是在UI中选择一些单词,然后它会向您显示相应的图像。很简单。
我的图片标签表看起来像这样......
imageId | tags
____________________
1 red
1 green
2 blue
2 yellow
3 red
3 yellow
etc...
目前,我正在使用一个简单的WHERE IN来获取所有图像ID ...
SELECT imageId FROM tagsTable WHERE tags IN ('red','green','blue')
...但现在我需要根据相关性对图像ID进行排名。因此,例如,如果我要求“红色”和“黄色”,我想在我的结果中首先获得图像ID 3,然后是id 1和2。
这似乎是一件很简单的事情,但我无法弄明白?
答案 0 :(得分:4)
SELECT imageId
FROM tagsTable
WHERE tags IN ('red','yellow')
GROUP BY imageId
ORDER BY COUNT(*) DESC
将首先返回最匹配的imageID。