Вы можете создать производную таблицу, которая перечисляет возможные значения с помощью union all
, а затем привести вашу таблицу с left join
:
select x.rule1, count(t.rule1) cnt
from (select 'Correct' rule1 union all select 'Incorrect' union all select 'Undefined') x
left join mytable t on t.rule1 = x.rule1
group by x.rule1
Это синтаксис кросс-базы данных, который будет работать в обоих MySQL и SQL Сервер.
В самых последних версиях MySQL можно использовать синтаксис values(row ...)
:
select x.rule1, count(t.rule1) cnt
from (values row('Correct'), row('Incorrect'), row('Undefined')) x(rule1)
left join mytable t on t.rule1 = x.rule1
group by x.rule1
На SQL Сервер, эквивалентный запрос:
select x.rule1, count(t.rule1) cnt
from (values ('Correct'), ('Incorrect'), ('Undefined')) x(rule1)
left join mytable t on t.rule1 = x.rule1
group by x.rule1