如題 請教mysql 的大神們,怎么讓子父級關系一對一關聯,
測驗資料如下
CREATE TABLE a (
`id` int(100) NOT NULL ,
`name` varchar(20) NULL ,
`pid` int NULL
);
INSERT into a VALUE (1,'父類1',null);
INSERT into a VALUE (2,'父類2',null);
INSERT into a VALUE (3,'子類1',1);
INSERT into a VALUE (4,'子類2',1);
INSERT into a VALUE (5,'子類3',2);
INSERT into a VALUE (6,'子類4',3);
怎么得到如下結果
id1 name1 pid id2 name2 pid2
1 父類1 null 3 子類1 1
1 父類1 null 4 子類2 1
1 父類1 null 6 子類4 3
2 父類2 null 5 子類3 2
就是父級和所擁有的子級形成直接的一對一關聯
或者得到第二種結果
id1 name1 pid id2 name2 pid2
1 父類1 null 6 子類4 3
1 父類1 null 4 子類2 1
2 父類2 null 5 子類3 2
最上層的父級和最末的子級形成一對一關聯。
uj5u.com熱心網友回復:
來個大神幫忙下啊uj5u.com熱心網友回復:
DROP TABLE IF EXISTS `mytest`;CREATE TABLE `mytest` (
`id` int(11) DEFAULT NULL,
`socre` int(11) DEFAULT NULL,
`group` varchar(255) DEFAULT NULL,
`pid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of mytest
-- ----------------------------
INSERT INTO `mytest` VALUES ('1', '30', 'u', null);
INSERT INTO `mytest` VALUES ('2', '5', 'u1', '1');
INSERT INTO `mytest` VALUES ('3', '6', 'u2', '1');
INSERT INTO `mytest` VALUES ('4', '5', 'a', null);
INSERT INTO `mytest` VALUES ('5', '4', 'a1', '4');
INSERT INTO `mytest` VALUES ('6', '7', 'a3', '4');
INSERT INTO `mytest` VALUES ('7', '6', 'a6', '4');
INSERT INTO `mytest` VALUES ('8', '9', 'c', null);
select * from mytest;
#select `group` from mytest where pid is null GROUP BY `group`;
select `group` from mytest where pid is null GROUP BY `group`;
select aa.`group`,sum(t.socre) from mytest t , (select `group` from mytest where pid is null GROUP BY `group`) aa where t.`group` like CONCAT(aa.`group`,'%') group by aa.`group` ;
select aa.`group`,t.`group` from mytest t , (select `group` from mytest where pid is null GROUP BY `group`) aa where t.`group` like CONCAT(aa.`group`,'%')
uj5u.com熱心網友回復:
遞回查詢,這種如果層級少還ok,如果層級很深,幾乎沒有好辦法,你可以百度一下 左右樹,或者參考:
https://www.cnblogs.com/M-D-Luffy/p/4712846.html
這種存盤結構,對于讀多 寫少的設計還有比較高效的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/93799.html
標籤:MySQL
上一篇:關于資料庫的一些問題
