誰能幫我出
我有一個表:
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所有行應更新數= 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
看來OP希望使用該'select'的'update'解決方案。 –
是的,但他質疑正確的選擇。無論如何,我已更新 –
我想使用group_concat的原因是因爲實際表比我的示例稍微複雜一些。而不是一個child_id我分組多個字段(如GROUP BY child_id1,child_id2,child_id3)。但我會檢查是否可以用連接重寫它。 – Nin