Есть ли какая-либо функция агрегирования MySQL для «CONTAINS»?

Скажем, у меня есть этот набор данных

  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

Что я интересно, есть ли лучший способ узнать, содержит ли агрегированное поле значение, или это единственный способ?

6
задан Nick 16 September 2010 в 10:55
поделиться