是否有"CONTAINS"的MySQL聚合函数?

Nic*_*ick 6 mysql sql group-by aggregate-functions

说我有这个数据集

  user  | group
--------+-------
a@a.com |   A
a@a.com |   B
b@b.com |   A
c@c.com |   B
d@d.com |   A
d@d.com |   B
d@d.com |   C

我想将其转换为这样的表:

  user  | IN_A  | IN_B  | IN_C
--------+-------+-------+-------
a@a.com | TRUE  | TRUE  | FALSE
b@b.com | TRUE  | FALSE | FALSE
c@c.com | FALSE | TRUE  | FALSE
d@d.com | TRUE  | TRUE  | TRUE

我有:

SELECT
  user,
  IF(LOCATE('A', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_A,
  IF(LOCATE('B', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_B,
  IF(LOCATE('C', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_C
FROM users
GROUP BY user

我想知道的是,如果有更好的方法来确定聚合字段是否包含值,或者这是唯一的方法吗?

nzn*_*nzn 13

正确的方法:

SELECT
   user,
   IF(SUM(group = 'A'), TRUE, FALSE) AS IN_A,
   IF(SUM(group = 'B'), TRUE, FALSE) AS IN_B,
   IF(SUM(group = 'C'), TRUE, FALSE) AS IN_C
FROM users
GROUP BY user
Run Code Online (Sandbox Code Playgroud)