作为新人,我一直在寻找高低寻找解决问题的方法。希望有人可以阐明解决方案。

我有一个SELECT语句,可根据需要吐出Reports。我想做的是有一个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
;

最佳答案

这是你想要的吗?

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)。

10-06 16:06
查看更多