Ошибка mysql «Операнд должен содержать 1 столбец (столбцы)» при подсчете вхождений в нескольких столбцах - PullRequest
0 голосов
/ 19 октября 2019

Я хочу получить вхождения в несколько столбцов и считать нулевые значения как нули.

Я пробовал это.

select IFNULL((select  id, count(*) as v
from    (
        select id, s1 as val from t1
        union all select id, s2 from t1
        union all select id, s3 from t1
        union all select id, s4 from t1
        union all select id, s5 from t1
        ) sub
where   val = 3
group by id),0) as Valcount;

, но возвращает ошибку «Операнд должен содержать 1 столбец (и)»

1 Ответ

0 голосов
/ 19 октября 2019

Я думаю, что вы хотите:

select id, sum(val = 3) as valcount
from (select id, s1 as val from t1 union all
      select id, s2 from t1 union all
      select id, s3 from t1 union all
      select id, s4 from t1 union all
      select id, s5 from t1
     ) sub
group by id;

То есть вы не хотите «считать NULL-значения как 0» (что бы это ни значило. Вы хотите включить идентификаторы, которые не имеют 3 внабор результатов со счетом 0.

Следует отметить, что ответ forpas на ваш предыдущий вопрос является правильным способом решения этой проблемы. Нет необходимости агрегировать по всему набору данных - это может бытьдорогая операция.

...