使用其标签查找相关图像

时间:2013-10-25 11:54:06

标签: sql subquery

这是一个将多个tagsimage

相关联的表格
| 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} 434234 < / p>

图片ID 1和图片ID 3共享3个标记ID 1245

图片ID 1和图片ID 4共享0个标签ID

因此,2高于3时会返回图片23,因为它有更多共同的标签,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}}

1 个答案:

答案 0 :(得分:0)

您是否期望您的结果如下所示:

http://sqlfiddle.com/#!4/57609/3

如果是的话。您可以使用该sql或者也请粘贴您的输出版本。