Alasdair
Alasdair

Reputation: 14113

MySQL: UPDATE table with COUNT from another table?

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?

Upvotes: 8

Views: 15884

Answers (2)

CloudyMarble
CloudyMarble

Reputation: 37566

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)

Upvotes: 17

paul
paul

Reputation: 22001

UPDATE tbl1, (select id, count(*) as idCount from tbl2 group by id) as t2
SET    tbl1.num = t2.idCount
WHERE  tbl1.id = t2.id;

Upvotes: 12

Related Questions