当前位置: 首页 > 面试题库 >

MySQL-选择与所有标签匹配的ID

华瀚漠
2023-03-14
问题内容

我有一个交叉引用表:

ID | tag
1  | 4
1  | 5
1  | 6
2  | 4
2  | 5
2  | 8
3  | 2

我需要选择与 所有 标签集匹配的ID 。例如,如果给'4','5'我标签,我将获得ID
'1','2'。如果给我标签,'4','2'我将不会获得任何ID,因为没有与 所有 标签匹配的ID 。

另外,如果为我提供了标签,'4','9'那么我也不应该获得任何结果ID,因为搜索'9'将得到一个NULL值,因此没有ID与 所有 标签匹配。

最近两天我一直在拔头发。希望有人可以帮助我。


问题答案:

查询的想法是,您需要将记录数与WHERE子句中提供的值数进行匹配。

SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(*) = 2
  • SQLFiddle演示

如果未在标签上为每个ID指定唯一约束,则DISTINCT需要

SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(DISTINCT tag) = 2


 类似资料:
  • 问题内容: 这似乎很基本,但我无法弄清楚。 我有一个表“ item_tags”,我想选择所有与标签1和2匹配的项目(例如,每个项目都必须同时具有两个标签)。 我将如何在mysql中执行此操作? 创建表是: 谢谢! 问题答案: 使用: 您需要定义GROUP BY和HAVING子句,并且不同标签ID的数量必须等于您在IN子句中指定的标签数。

  • 这个问题听起来可能很奇怪,因为处理它的一个简单方法就是向这些类或id添加一个特定的类或id ...但是我的html是由其他一些工具渲染的,所以我不能管理那些特定的

  • 问题内容: 我正在尝试查询与所有给定标记集匹配的对象。 基本上,我希望用户能够添加越来越多的标签来过滤或“缩小”其搜索结果,就像newegg.com一样。 我的表结构是一个对象表,一个标签表和一个MANY:MANY关系表ObjectsTags。所以我有一个像这样的JOIN查询: 我尝试使用IN子句/条件,如下所示: 但是我了解到,这模拟了一系列OR,因此您向查询中添加的标签越多,得到的结果就越多,

  • 在发电机表中,我希望通过选择属性值与一组值匹配的所有项来查询。例如,我的表具有current_status属性,因此我希望所有具有“新”或“ASSIGNED”值的项。如果我对current_status属性应用GSI,看起来我必须在两个查询中执行此操作?或者进行扫描?

  • 本文向大家介绍MySQL 选择所有列(*),包括了MySQL 选择所有列(*)的使用技巧和注意事项,需要的朋友参考一下 示例 询问 结果 您可以通过执行以下操作从一个连接的一个表中选择所有列: 最佳实践*除非正在调试或获取row(s)关联数组,否则不要使用,否则架构更改(ADD / DROP /重新排列列)可能会导致讨厌的应用程序错误。另外,如果提供结果集中所需的列列表,MySQL的查询计划程序通

  • A well-known tag balancing: searches for tag or tag's content bounds from current caret position and selects it. It will expand (outward balancing) or shrink (inward balancing) selection when called m