Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL: UPDATE table with COUNT from another table?

Tags:

sql

mysql

I thought this would be simple but I can't get my head around it...

I have one table tbl1 and it has columns id,otherstuff,num.

I have another table tbl2 and it has columns id,info.

What I want to is make the num column of tbl1 equal to the number of rows with the same id in tbl2. Kind of like this:

UPDATE tbl1 SET num =
(SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id)

Any ideas?

like image 684
Alasdair Avatar asked Apr 17 '13 12:04

Alasdair


2 Answers

If your num column is a valid numeric type your query should work as is:

UPDATE tbl1 SET num = (SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id)
like image 75
CloudyMarble Avatar answered Nov 10 '22 00:11

CloudyMarble


UPDATE tbl1, (select id, count(*) as idCount from tbl2 group by id) as t2
SET    tbl1.num = t2.idCount
WHERE  tbl1.id = t2.id;
like image 41
paul Avatar answered Nov 10 '22 00:11

paul