我有一个类似于下面的SQL表。我想在tag_id匹配多个项目时带回独特的结果。
因此,如果我想查找具有image_id
的每个tag_id = 106 and 73
,我希望它能带回image_id 12345714 and 12345712
。
我已经尝试过了
SELECT *
FROM tag_relationship
WHERE tag_id
IN ( 106, 73 )
但这会带回来
id image_id tag_id
61 12345706 73
70 12345712 73
72 12345712 106
76 12345714 73
77 12345714 106
我也尝试了GROUP BY
,但这似乎不太正确。
全桌样本:
image_id
可以在不同的行中使用相同的数字,但会有不同的tag_id
。
id image_id tag_id
1 12345679 63
2 12345679 83
3 12345680 74
4 12345680 108
5 12345680 75
6 12345683 103
7 12345682 87
8 12345682 105
9 12345682 74
10 12345682 81
11 12345683 79
12 12345683 109
13 12345689 111
14 12345689 69
15 12345690 104
16 12345687 110
17 12345687 69
18 12345687 91
19 12345687 93
20 12345687 63
21 12345692 69
22 12345692 104
23 12345692 80
24 12345692 76
25 12345693 74
26 12345693 99
27 12345693 96
28 12345693 94
29 12345691 63
30 12345691 69
31 12345697 92
32 12345697 76
33 12345698 74
34 12345699 97
35 12345698 94
36 12345699 98
37 12345698 81
38 12345699 105
39 12345697 91
40 12345694 100
41 12345694 101
42 12345694 94
43 12345694 74
44 12345696 78
45 12345696 95
46 12345696 112
47 12345701 113
48 12345701 114
49 12345700 94
50 12345700 91
51 12345700 90
52 12345702 87
53 12345702 115
54 12345702 80
55 12345702 74
56 12345704 78
57 12345705 83
58 12345705 84
59 12345704 63
60 12345705 104
61 12345706 73
62 12345706 64
63 12345706 86
64 12345706 88
65 12345706 89
66 12345713 80
67 12345713 115
68 12345713 81
69 12345717 63
70 12345712 73
71 12345717 64
72 12345712 106
73 12345717 79
74 12345712 74
75 12345709 76
76 12345714 73
77 12345714 106
78 12345715 68
79 12345716 116
80 12345715 69
81 12345716 71
答案 0 :(得分:2)
SELECT image_id
FROM tag_relationship
WHERE tag_id IN ( 106, 73 )
GROUP BY image_id
HAVING COUNT(*) = 2
答案 1 :(得分:0)
SELECT DISTINCT image_id
FROM tag_relationship
WHERE tag_id
IN ( 106, 73 )
答案 2 :(得分:0)
这可能真的很愚蠢/简单,但我认为这会奏效:
SELECT image_id
FROM tag_relationship
WHERE
tag_id = 106 AND tag_id = 73
答案 3 :(得分:0)
试试这个
SELECT DISTINCT t1.image_id
FROM tag_relationship t1
JOIN tag_relationship t2 ON t1.image_id=t2.image_id
WHERE t1.tag_id=106
and t2.tag_id=73