SQL 多对多选择与链接表

标签 sql search stored-procedures many-to-many sql-match-all

我正在尝试使用以下 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/

相关文章:

SQL计算已知时期内的不同时间范围

.net - 关于正确使用数据表和数据集的困惑

php - 在 PHP 中的二进制文件中搜索字节序列?

sql-server - 截断与删除和表锁 SQL Server 2012

SQL Server 2008 插入后创建触发器...返回id...调用存储过程

sql - Spark数据集错误: Both sides of this join are outside the broadcasting threshold and computing it could be prohibitively expensive

sql - 在sql中将varchar转换为datetime

c# - 从 SQL Server 读取 VARBINARY(MAX) 到 C#

c - 将字符串插入二叉搜索树 C

java - Nutch 1.4 与 Solr 3.5 http.agent.name 属性的集成