Вам нужны левое соединение между фактическими значениями, которые вы хотите в вашем выводе (хотя это может быть SELECT DISTINCT
из другой таблицы, где все значения проживают если таковой имеется), то это может быть создано с помощью SELECT
и UNION
и запроса. Я часто это делаю для BI, где «уровень представления» в некоторых случаях менее определен.
Смотрите пример ниже:
CREATE TABLE temp (id INTEGER, `name` CHAR(3));
#ALTER TABLE temp CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO temp VALUES (1, 'AAA'), (2, 'BBB'), (3, 'BBB');
SELECT A.`name`, IFNULL(B.nameCOUNT, 0) nameCOUNT FROM
(
SELECT 'AAA' `name` UNION ALL
SELECT 'BBB' `name` UNION ALL
SELECT 'CCC' `name`
) A
LEFT OUTER JOIN
(
SELECT `name`, COUNT(*) nameCOUNT FROM temp GROUP BY `name`
) B
ON A.`name` = B.`name`;
Примечание комментируемого сверка заявление, не уверен, если это будет необходимо на вашей установке, раскомментируйте, если вы видите ошибку вроде этого:
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '='
Пусть я знаю, если у вас есть какие-либо вопросы, привет,
James
Это действительно объявление исслед. проблема. Рассмотрите возможность обработки таких проблем на уровне презентации (если это доступно) – Strawberry
Я рад, что вы это получили. Проверьте мой ответ, как принято, пожалуйста;) – daniherculano