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
Sql 使用其标记查找相关图像_Sql_Subquery - Fatal编程技术网

Sql 使用其标记查找相关图像

Sql 使用其标记查找相关图像,sql,subquery,Sql,Subquery,这是一个将多个标记连接到图像 | image_id | tag_id | |:---------|---------:| | 1 | 43 | | 1 | 34 | | 1 | 12 | | 1 | 4 | | 1 | 23 | | 1 | 5 | | 2 | 4 | | 2 | 23

这是一个将多个
标记
连接到
图像

| 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
43
4
23
4

图像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

你是否期望得到如下链接中的结果:


如果有的话。您可以使用该sql,也可以粘贴输出版本。

我正在努力理解输入和输出。您是否可以提供另一个示例数据集,每个图像可能有5或6个相关标记?@PP。我添加了一个更大的数据集,希望有更清晰的解释。