I'm trying to create a single UPDATE query to deal with the following problem:
================================================================== -- I've got two tables: CREATE TABLE `banannas` ( `owner` varchar(15) NOT NULL default '' ); CREATE TABLE `monkeys` ( `name` varchar(15) default NULL, `banannacount` int(4) default NULL ); -- I've got three monkeys: INSERT INTO `monkeys` VALUES ('bonzo',NULL),('dunston',NULL),('ham',NULL); -- Some of those monkeys have banannas. -- Some of those monkeys have more than one bananna. -- Some of those monkeys don't have any banannas. INSERT INTO `banannas` VALUES ('bonzo'),('bonzo'),('bonzo'),('ham'); ================================================================== I'm trying to write an UPDATE query so that monkeys.banannacount is set to the number of banannas each monkey owns. mysql> SELECT name,COUNT(banannas.owner) as bc FROM monkeys LEFT JOIN banannas ON monkeys.name=banannas.owner GROUP BY owner; +---------+----+ | name | bc | +---------+----+ | dunston | 0 | | bonzo | 3 | | ham | 1 | +---------+----+ I know it's possible to assign an UPDATE with the product of a join, but the GROUP BY clause is throwing me off. mysql> UPDATE monkeys LEFT JOIN banannas ON monkeys.name=banannas.owner GROUP BY banannas.owner SET monkeys.banannas=COUNT(banannas.owner); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY banannas.owner SET monkeys.banannas=COUNT(banannas.owner)' at line 1 mysql> UPDATE monkeys LEFT JOIN banannas ON monkeys.name=banannas.owner SET monkeys.banannas=COUNT(banannas.owner) GROUP BY banannas.owner; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY banannas.owner' at line 1 Is this possible without subqueries? Is this possible at all? -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]