如何选择相关表中具有多个值的记录?

克里斯

我有以下三个用于标记内容的表,其中每个内容可以具有一对多标记。例如,内容记录可以具有“加利福尼亚”和“变量”的标签。

带内容表

Content
-ContentID
-ContentName

带标签的表

Tag
-TagID
-TagName

链接内容和标签的表

ContentTag
-ContentID
-TagID

使用以下SELECT语句,我想获取TagID分别为21和54的记录,但是不返回任何行。

SELECT * FROM ContentTag
INNER JOIN Content On ContentTag.ContentID=Content.ContentID
INNER JOIN Tag ON ContentTag.TagID=Tag.TagID
Where (Tag.TagID=21 And Tag.TagID=54)

如何创建SQL SELECT语句以检索具有一对多标签的内容?

戈登·利诺夫(Gordon Linoff)

我喜欢使用聚合和having子句来解决这个问题

SELECT c.ContentId, c.ContentName
FROM ContentTag ct INNER JOIN
     Content c
     On ct.ContentID = c.ContentID 
WHERE ct.TagID IN (21, 54)
GROUP BY c.ContentId, c.ContentName
HAVING COUNT(Distinct ct.TagId) = 2;

一些注意事项:

  • 您不需要join标签表。您正在使用ID,并且位于中ContentTag
  • 您不需要*我假设您正在查找具有两个标签的内容。
  • WHERE子句将标签限制为有问题的两个标签。
  • HAVING子句确保两者都存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择/更新一个表中的记录,这些记录是从具有多个记录的另一表列中选择的喜欢的单词

SQL如何选择具有特定值的最新记录

如何将记录插入到具有gorm的现有多个表中

如何通过比较A列中具有相同值的记录之间的B,C列中的值来选择记录?

从具有外键约束的多个表中删除记录

如何获取SQL Server表中具有最大值的所有记录

当我选择具有该ID值的选项时,如何显示带有与该ID相关的数据的表?

选择所有相关表中没有值的记录的行

隔离具有多个值的记录(派生表)

Rails:如何根据表A中的每条记录显示表B中的所有相关记录

根据具有多个记录的表中另一列的不同值添加值

如何选择表中具有重复值的行?

如何返回具有多个状态的表中的最后一条记录

Yii从表中选择在相关表中没有记录的第一条记录

XPATH-如何选择在表的同一行的列中具有多个值的tr?

从表A中仅选择没有多个记录的ID

MySQL-如何选择与所有IN值匹配但在1个或多个表中的记录

SQL查询:如何选择相关表中所有记录都具有特定属性值的记录

MySql仅从父表具有多个值的子表中获取记录

如何在where子句为pgsql的具有相同列的多个表中对记录进行计数

使用Linq使用方法语法在相关表中查找表中具有特定值的所有记录

如何在T-sql中选择另一个表上具有最后相关记录的表的记录

如果相关表中有多个值,如何选择一行

查询以从表中选择具有特定列值的记录

如何为其他列中具有 Data/NULL 值的列选择重复记录?

如何在SQL中的一张表中选择多个具有相同ID的值

如何从 Monogodb 中具有多个相似文档的记录列表中获取最大值?

在具有层次结构的表中显示相关值

如何选择具有相同值的记录?