MySQL GROUP & COUNT 多个表

Pat*_*obs 1 mysql group-by count multiple-tables

我有一个由 3 部分组成的问题,这给我带来了麻烦 我知道如果我一次查询 1 个表,如何让这些表正常工作,但我似乎无法弄清楚如何将tagsmore_tags表结合起来以获得相同的结果.

下面列出了我遇到的 3 个主要问题。

问题1

我希望能够从tagsmore_tags表中对相同的标签进行分组。

问题2

我还希望能够显示每个表中不存在于另一个表中的标签。

问题 3

我还想计算标签在tagsmore_tags表格中出现的总次数。

MYSQL 表

SELECT `tags`.`tag_id`, `tags`.`tag_name`, COUNT(`tags`.`tag_name`) as 'num' 
FROM `tags` 
INNER JOIN `users` ON `tags`.`user_id` = `users`.`user_id` 
WHERE `users`.`active` IS NULL
GROUP BY `tags`.`tag_name` 
ORDER BY `tags`.`tag_name` ASC";


SELECT `more_tags`.`tag_id`, `more_tags`.`tag_name`, COUNT(`more_tags`.`tag_name`) as 'num' 
FROM `more_tags` 
INNER JOIN `users` ON `more_tags`.`user_id` = `users`.`user_id` 
WHERE `users`.`active` IS NULL
GROUP BY `more_tags`.`tag_name` 
ORDER BY `more_tags`.`tag_name` ASC";             
Run Code Online (Sandbox Code Playgroud)

期望输出

tag_id  tag_name    num
10  apple   12
192     pear    1
197     bored   1
203     sad     3
207     ads     2
217     news    1
190     bf  1
196     cape    1
Run Code Online (Sandbox Code Playgroud)

fth*_*lla 5

问题1:

SELECT tag_id, tag_name, count(*)
FROM (
  SELECT tag_id, tag_name FROM tags
  UNION ALL
  SELECT tag_id, tag_name FROM more_tags
) s
GROUP BY tag_id, tag_name
Run Code Online (Sandbox Code Playgroud)

问题2:

SELECT tag_id, tag_name, 'not present in more tags' as description
FROM tags LEFT JOIN more_tags ON tags.tag_id=more_tags.tag_id
WHERE more_tags.tag_id IS NULL
UNION ALL
SELECT tag_id, tag_name, 'not present in tags' as description
FROM tags RIGHT JOIN more_tags ON tags.tag_id=more_tags.tag_id
WHERE tags.tag_id IS NULL
Run Code Online (Sandbox Code Playgroud)

问题 3:

SELECT tag_id, tag_name, COUNT(*)
FROM tags INNER JOIN more_tags ON tags.tag_id=more_tags.tag_id
GROUP BY tag_id, tag_name
Run Code Online (Sandbox Code Playgroud)