快捷搜索:  汽车  科技

2个excel查找相同数据并标记,如何查询包含有两个标签的同一条记录

2个excel查找相同数据并标记,如何查询包含有两个标签的同一条记录所以查询我们需要用groupBy进行分组过滤。得到唯一的md5值 url,title的关系最重要的是符合条件:count(*) = 2 【匹配到两个标签】满足条件的记录会被找出来

需求:我们有很多数据,每一条数据,可能有N个标签。我们需要检索出包含标签A,标签B的记录,把所有符合条件的记录都找出来

先看我们的实例数据建表语句:

CREATE TABLE Links (`md5` varchar(4) `url` varchar(10) `title` varchar(5) `numberofsaves` int) ; INSERT INTO Links (`md5` `url` `title` `numberofsaves`) VALUES ('a0a0' 'google.com' 'foo' 200) ('b1b1' 'yahoo.com' 'yahoo' 100) ; CREATE TABLE Tags (`md5` varchar(4) `tag` varchar(7)) ; INSERT INTO Tags (`md5` `tag`) VALUES ('a0a0' 'awesome') ('a0a0' 'useful') ('a0a0' 'cool') ('b1b1' 'useful') ('b1b1' 'boring') ;

我们来看具体查询的SQL语句要怎么写:我们要找到标签包含awesome useful的记录

SELECT a.md5 a.url a.title FROM Links a INNER JOIN Tags b ON a.md5 = b.md5 WHERE b.Tag IN ('awesome' 'useful') -- <<== 查询条件:标签列表 GROUP BY a.md5 a.url a.title HAVING COUNT(*) = 2 -- <<== 匹配到的标签数量

解释:通过一个innerJoin,把两个表关联起来,然后就得到一个标签一行记录的虚拟表,这个虚拟表可能会有相同的md5值的记录,因为他们的tag 字段可能是不同的。

所以查询我们需要用groupBy进行分组过滤。得到唯一的md5值 url,title的关系

最重要的是符合条件:count(*) = 2 【匹配到两个标签】

满足条件的记录会被找出来

2个excel查找相同数据并标记,如何查询包含有两个标签的同一条记录(1)

猜您喜欢: