Скажите, у меня есть этот набор данных
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
Что мне интересно, так это если есть лучший способ узнать, содержит ли агрегированное поле значение, или это единственный способ?