Этот оператор SELECT
дает мне результаты, которые я хочу:
SELECT submission_archive.id,
submission_archive.status_id,
lead.status_id AS job_status_id,
submission_archive.submission_id,
lead.id AS lead_id
FROM submission_archive
JOIN record
ON submission_archive.record_id = record.id
JOIN lead
ON record.lead_id = lead.id
WHERE submission_archive.status_id = 1
AND lead.status_id = 9
GROUP BY submission_archive.submission_id
Для этих результатов я хочу установить submission_archive.status_id=9
, но когда я пытаюсь:
UPDATE submission_archive
JOIN record
ON submission_archive.record_id = record.id
JOIN lead
ON record.lead_id = lead.id
SET submission_archive.status_id = 9
WHERE submission_archive.status_id = 1
AND submission.status_id = 9
GROUP BY submission_archive.submission_id
, я получаю следующая ошибка:
В синтаксисе SQL имеется ошибка; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с 'GROUP BY submission_archive.submission_id'
После некоторого осмотра я подозревал, что мне может понадобиться использовать подзапрос для достижения результаты, которые я хочу. Я никогда не делал подзапросы, но у меня было go с этим:
UPDATE submission_archive
SET status_id=9
WHERE (
SELECT submission_archive.id
FROM submission_archive
JOIN record
ON submission_archive.record_id=record.id
JOIN lead
ON record.lead_id=lead.id
WHERE submission_archive.status_id=1 AND lead.status_id=9
GROUP BY submission_archive.submission_id
)
И это привело меня к этой ошибке:
Таблица 'submission_archive' указана дважды, и как цель для 'UPDATE', и как отдельный источник данных
Я могу выполнить оператор UPDATE
без оператора GROUP BY
, но мне нужно обновить только одну из записей, которые иметь соответствие submission_id
s - не имеет значения, какой именно, но это должен быть только один из них.
Может ли кто-нибудь помочь мне достичь того, чего я хочу? Большое спасибо.