这是一个将多个tags
与image
| image_id | tag_id |
|:---------|---------:|
| 1 | 43 |
| 1 | 34 |
| 1 | 12 |
| 1 | 4 |
| 1 | 23 |
| 1 | 5 |
| 2 | 4 |
| 2 | 23 |
| 2 | 53 |
| 2 | 43 |
| 2 | 24 |
| 2 | 44 |
| 3 | 5 |
| 3 | 12 |
| 3 | 4 |
| 3 | 53 |
| 3 | 44 |
| 4 | 100 |
| 4 | 120 |
| 4 | 433 |
| 4 | 532 |
| 4 | 441 |
我想编写一个SQL查询,它将返回与其标记最相关的相关图像的排序(它们共享的标记越多,它就越高)。
图片ID 1
和图片ID 2
共享4个标记ID&{39} 43
,4
,23
,4
< / p>
图片ID 1
和图片ID 3
共享3个标记ID 12
,4
,5
图片ID 1
和图片ID 4
共享0个标签ID
因此,2
高于3
时会返回图片2
和3
,因为它有更多共同的标签,4
会是 SELECT *
FROM image_tag i
JOIN tag t
ON t.tag_id = i.tag_id
WHERE i.tag_id IN (
SELECT tag_id
FROM image_tag
WHERE image_id = 1)
AND image_id != 1
排除因为它不共享任何标签。
这是我到目前为止所得到的,它似乎有效,但没有最相关的订单。
{{1}}