Если вам нужна каждая подходящая строка, вы можете просто сказать WHERE text LIKE '%foo%' OR text LIKE '%bar%'
. Однако, если я понимаю ваш вопрос, вам нужно количество строк, соответствующих '%foo%'
, и отдельное количество строк, соответствующих '%bar%'
. Это означает, что SUM
s и GROUP BY
должны выполняться отдельно для каждого текста критерия.
Одно из возможных решений - написать все запросы отдельно, а затем union
их в конце. Обратите внимание, что union
требует, чтобы у каждого столбца было имя. Вам также понадобится строка статического идентификатора в каждом подзапросе, чтобы вы могли определить, какие критерии были выполнены. Таким образом, у вас будет что-то вроде:
SELECT sum(X) AS sumx, sum(Y) AS sumy, Z, 'foo' AS criteria FROM table WHERE text LIKE '%foo%' AND A = nnnnnn AND B > 0 Group by Z
UNION
SELECT sum(X) AS sumx, sum(Y) AS sumy, Z, 'bar' AS criteria FROM table WHERE text LIKE '%bar%' AND A = nnnnnn AND B > 0 Group by Z
UNION
...(etc)...