How to UPDATE from JOIN with GROUP BY

Posted on

Question :

In a SELECT query of

SELECT b.id, MIN(IFNULL(a.views,0)) AS counted 
FROM table1 a JOIN table2 b ON a.id=b.id GROUP BY id 
HAVING counted>0

How can I turn this query to UPDATE as

UPDATE b.number = counted

Answer :

UPDATE table2 AS b1, ( SELECT b.id, MIN(IFNULL(a.views, 0)) AS counted 
                       FROM table1 a 
                       JOIN table2 b ON a.id = b.id 
                       GROUP BY id 
                       HAVING counted > 0 ) AS b2
SET b1.number = b2.counted
WHERE b1.id = b2.id

    UPDATE table2
    INNER JOIN (SELECT MIN(IFNULL(table1.views,0)) counted
    FROM table1
    GROUP BY table1.id
    HAVING counted>0
    ) x ON x.id = table2.id
    SET table2.number = x.counted

Leave a Reply

Your email address will not be published. Required fields are marked *