mysql - 如何在 SQLite 中按相关性排序?

标签 mysql sql sqlite

我什至不确定用正确的方式来表达这个问题。我有一个包含数千个图像 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。

这似乎是一件很简单的事情,但我想不通?

最佳答案

SELECT imageId
FROM tagsTable
WHERE tags IN ('red','yellow')
GROUP BY imageId
ORDER BY COUNT(*) DESC

首先返回匹配最多的imageID。

关于mysql - 如何在 SQLite 中按相关性排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49070938/

相关文章:

mysql - 选择最近的 MAX() 和 MIN() - WebSQL

mysql - Asterisk 与 MySQL

MySQL,拆分列数据并通过拆分数据得到结果

php - 用于选择最大元素的 MySQL 查询

sql - 如何只获取字符串的一部分

python - 用python删除sql代码并从JOIN中选择

mysql - 所有的关系都应该被定义吗?

php - php中检查用户是否已经存在的代码是什么?

sql - 小数点分隔符 oracle

ruby-on-rails - 由于 sqlite3,推送被拒绝到 Heroku