我正在尝试使用以下 3 个表格使我的关键字搜索尽可能高效:
tblImageFiles [ID, 图片网址]
tbl标签 [ID、标签]
tblxImagesTags [ID、ImageID、TagID](这是一个以多对多关系连接上述内容的链接表)
任何人都可以帮助我使用存储过程来返回与基于此架构输入的所有搜索标签相匹配的所有图像吗?
谢谢
最佳答案
count(distinct aux.TagID)
中的数字必须等于 where t.Tag in (tag1, tag2, tag3)
中的标签数量。
select img.* from tblImageFiles img
inner join (
select it.ImageID from tblTags t
inner join tblxImagesTags it on it.TagID = t.ID
where t.Tag in (tag1, tag2, tag3)
group by it.ImageID
having count(distinct it.TagID) = 3
) aux on aux.ImageID = img.ID
关于SQL 多对多选择与链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649988/