下面更新!
谁能帮帮我
我有一张桌子:
CREATE TABLE `group_c` (
`parent_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`child_id` int(11) DEFAULT NULL,
`number` int(11) DEFAULT NULL,
PRIMARY KEY (`parent_id`)
) ENGINE=InnoDB;
INSERT INTO group_c(parent_id,child_id)
VALUES (1,1),(2,2),(3,3),(4,1),(5,4),(6,4),(7,6),(8,1),(9,2),(10,1),(11,1),(12,1),(13,0);
我想将每个有多个父母的孩子的数字字段更新为 1:
SELECT group_concat(parent_id), count(*) as c FROM group_c group by child_id having c>1
结果:
GROUP_CONCAT(PARENT_ID) C
12,11,10,8,1,4 6
9,2 2
6,5 2
所以所有 parent_id 为 12,11,10,8,1,4,9,2,6,5 的行都应该更新为 number =1
我试过类似的东西:
UPDATE group_c SET number=1 WHERE FIND_IN_SET(parent_id, SELECT pid FROM (select group_concat(parent_id), count(*) as c FROM group_c group by child_id having c>1));
但这不起作用。
我怎样才能做到这一点?
SQLFIDDLE:http ://sqlfiddle.com/#!2/acb75/5
[编辑]
我试图使示例简单,但实际情况要复杂一些,因为我按多个字段进行分组。这是一个新的小提琴:http ://sqlfiddle.com/#!2/7aed0/11