Я не буду получать для каждого дня недели уникальную запись, если employee_id имеет значение этой записи, иначе employee_id имеет значение Null. Я пробую этот запрос
SELECT
*
FROM
`calendar`
WHERE `employee_id` = 1
OR `employee_id` IS NULL
GROUP BY `weekday`
результат
Но я ожидаю
Вы можете помочь мне? Спасибо
См. Почему я должен предоставлять MCVE для того, что мне кажется очень простым SQL-запросом






Проблема в том, что у вас есть столбцы в списке после SELECT, которые не появляются в выражении GROUP BY, и к ним не применена агрегатная функция. MySQL, в отличие от большинства других СУБД, позволяет это в более старых версиях (или с определенными настройками), но результаты, скорее всего, будут мусорными.
Исправьте это, включив столбцы в выражение GROUP BY или применив к ним агрегатную функцию. Например:
SELECT max(`employee_id`),
`weekday`
FROM `calendar`
WHERE `employee_id` = 1
OR `employee_id` IS NULL
GROUP BY `weekday`;
Обратите внимание на агрегатную функцию max() на employee_id.
ВЫБЕРИТЕ МАКС (employee_id), weekday, calendar_id ИЗ calendar, ГДЕ employee_id = 1 ИЛИ employee_id ЯВЛЯЕТСЯ НУЛЕВОЙ ГРУППой ПО weekday;
Попробуйте этот запрос, и вы увидите, что результат не нужен
@david, ваш запрос не работает, потому что вы применили группу до в будний день. поэтому вам нужно взять все столбцы в операторе выбора, которые можно сгруппировать. Поскольку идентификатор календаря не сгруппирован (не должен быть), поэтому он не работает
Попробуйте это:
SELECT
b.calendar_id,
a.employee_id,
a.weekday
FROM
(SELECT
`weekday`,
MAX(employee_id) AS employee_id
FROM
calendar
WHERE employee_id = 1
OR employee_id IS NULL
GROUP BY `weekday`) a
LEFT JOIN calendar b
ON a.weekday = b.weekday
AND a.employee_id = b.employee_id ;
Дайте мне знать в случае каких-либо уточнений.
Спасибо. Только спросите имя таблицы, это календарь, а не calender
о да. я изменил это. У вас есть логика, моя работа сделана :)
Нет проблем, просто совет, никогда не размещайте фотографии. публиковать наборы данных, как и писать их, чтобы тот, кто пытается решить вашу проблему, мог напрямую скопировать их. Я предполагаю, что одна из причин, по которой ваш вопрос получил столько голосов против, заключается в этом.
Позвольте нам продолжить обсуждение в чате.
SELECT * FROM ... GROUP BY ...Что может быть не так? GROUP BY вносит наибольшую путаницу и"note, unfortunately, MySQL users that do not use the STRICT mode will still get a result here with arbitrary last names!, so a new MySQL user won’t understand their mistake"