将包含LEFT OUTER JOIN的SELECT语句调整为来自同一表的UPDATE语句-可以吗?

时间:2018-10-28 07:56:21

标签: mysql sql left-join

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

我有一个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
;

1 个答案:

答案 0 :(得分:0)

这是您想要的吗?

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