我可能會丟失一些明顯的東西,但我需要一個只返回匹配同一列上多個條件的記錄的查詢。SELECT匹配多個WHERE標準(來自鏈接表)
該表格是一個簡單的鏈接表,它將標籤鏈接到照片,即標籤可以應用於多張照片,照片可以有多個標籤。
photoid | tagid
----------------
343 | 2
343 | 5
343 | 8
522 | 5
522 | 1
522 | 10
522 | 8
118 | 8
118 | 5
etc...
如所看到的PHOTOID 343具有3個標籤。
現在,我需要的是一個查詢,爲我提供具有特定標籤的所有照片的照片。這些照片應具有任標籤識別1 或標籤識別2,並應具有既標籤識別5 和標籤識別8,但必須不已經 10 TAGID即 像 (tagid=1 OR tagid=2) AND (tagid=5 AND tagid=8) AND tagid!=10
。 在上面的例子中,只有343匹配。
我試圖與WHERE IN
與GROUP BY
和HAVING COUNT
SELECT PhotoTags.photoid, FROM PhotoTags
WHERE (PhotoTags.tagid) IN ((5),(8)) AND (PhotoTags.tagid) NOT IN (10)
GROUP BY PhotoTags.photoid
HAVING count(distinct PhotoTags.tagid)=2
此僅做工作的一部分,它給了我匹配標籤識別5和8,但不是所有的10張照片如何添加AND (tagid=1 OR tagid=2)
標準到查詢?
如何'tagid'既'5'和'8 '?同樣做'tagid IN(5,8)'意味着'tagID!= 10'。 –
所以,你正在試圖找到所有'* tagid' 5 *和* 8的'photoid's? –
一張照片可能有多個標籤,我試圖查詢具有特定標籤的所有照片。 @火箭:在這個例子中,我希望所有的'photoid'都有'tagid'' [[]]或2,並且[tagital] 5 [_italic_]和8都有[_italic_] tagid' 10. –