Корректировка оператора SELECT, содержащего LEFT OUTER JOIN, для оператора UPDATE из той же таблицы - возможно ли это? - PullRequest
0 голосов
/ 28 октября 2018

Как новичок, я охотился высоко и низко, чтобы найти решение своей проблемы.Надеясь, что кто-то может пролить свет на решение.

У меня есть оператор SELECT, который выдает отчеты по желанию.То, что я хотел бы сделать, это иметь оператор UPDATE, который обновляет мой столбец таблицы с именем report с результирующим номером.Любые предложения будут с благодарностью.

SELECT
    l.id,
    l.plate,
    COUNT(*) AS Reports
FROM
    coh_items AS l
LEFT OUTER JOIN coh_items AS r
ON
    l.id >= r.id AND l.plate = r.plate
GROUP BY
    l.id,
    l.plate
;

1 Ответ

0 голосов
/ 28 октября 2018

Это то, что вы хотите?

update coh_items i left join
       (select i.id, i.plate, count(*) as reports
        from coh_items i left join
             coh_items i2
             on i.id >= i2.id and i.plate = i2.plate
        group by i.id, i.place
       ) i2
       using (id, plate)
    set i.reports = i2.reports;

Левое объединение кажется ненужным, потому что любая строка всегда будет соответствовать сама себе (при условии, что столбцы сравнения не NULL).

...