mysql - 对于给定的一组数据,如何检查输入是否具有整组数据?

标签 mysql sql group-by aggregate

翻译举例:
对于给定的一组电影,我如何获取其类别并判断我们是否获得了完整的电影集作为输入?

        -------------------------
        | CATEGORY   | MOVIE    |
        -------------------------
        | Fantasy    | Hobbit   |
        | Fantasy    | Hellboy  |
        | Romance    | Twilight |
        | Mystery    | Memento  |
        | Mystery    | Get Out  |

例如,如果我传入 Hobbit, Hellboy 作为输入,我应该返回

        -------------------------------------------
        | CATEGORY | MOVIES          | HASFULLSET |
        -------------------------------------------
        | Fantasy  | Hobbit, Hellboy | 1          |

如果我传入 Hobbit, Twilight 作为输入,我应该返回

        -------------------------------------
        | CATEGORY | MOVIES    | HASFULLSET |
        -------------------------------------
        | Fantasy  | Hobbit    | 0          |
        | Romance  | Twilight  | 1          |

如果不使用子查询,我就无法超越这个。

SELECT Category, COUNT(*) AS GRP_COUNT 
FROM movie
WHERE Movies IN (@movies)
GROUP BY Category

最佳答案

尝试以下查询:

SET @movies = 'Hobbit,Hellboy';
select category,
       group_concat(case when find_in_set(Movie,@movies) then movie end) AS movies,
           case when
             count(*) = sum(case when find_in_set(Movie,@movies) then 1 else 0 end)
           then 1 else 0 end FullSet
from tbl
group by category
having movies != '';

Demo

关于mysql - 对于给定的一组数据,如何检查输入是否具有整组数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164555/

相关文章:

python - 列出 pandas 数据框中每组的唯一值计数

python - 如何创建一个列来测量另一个字符串列中存在的项目数?

mysql - 复杂的动态 SQL 查询,自行加入

mysql - Spring将文件路径插入mysql

sql - SSIS - 派生列

sql - 如何在 Multi-Tenancy 数据库中使字段 NOT NULL

mysql - 无效操作: column "[column_name]" must appear in the GROUP BY clause or be used in an aggregate function;

bash - sudo'd mysqldump over ssh 语法?

一旦插入变量,MySQL 过程就会表现得很奇怪

SQL Schema 设计题——删除标志