怎么查询出树形,不超过3,4层 本帖最后由 btut2004 于 2014-04-30 11:38:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用你的数据,要求结果贴出来看看,只有3级,LEFT JOIN就行了 要求的结果就是这样subject id中国 1 北京 8 朝阳区 7 大兴区 9 广东 2 惠州市 4 深圳市 6 福建 5 福州市 11 INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('1', '0', '', '婚纱', '0', '0', '3'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('2', '0', '', '汽车美容', '0', '0', '1'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('3', '0', '', '轮胎销售', '0', '0', '1'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('4', '0', '6,7,10,11', '手机', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('5', '0', '8', '笔记本', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('6', '4', '', '苹果', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('7', '4', '', '三星', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('8', '5', '', '联想', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('10', '4', '', '小米', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('11', '4', '', '安卓', '0', '0', '14'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('12', '0', '13', '温泉', '0', '0', '18'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('13', '12', '', '活动', '0', '0', '18'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('14', '0', '15,16', '用品', '0', '0', '18'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('15', '14', '', '泳衣', '0', '0', '18'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('16', '14', '', '泳裤', '0', '0', '18'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('17', '0', '', '婚纱照', '0', '0', '20'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('18', '0', '', '婚纱照', '0', '0', '21'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('19', '0', '', '婚纱照', '0', '0', '22'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('20', '0', '', '风格照欣赏', '0', '0', '25'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('21', '0', '', '风格照欣赏', '0', '0', '25'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('22', '0', '', '风格照欣赏', '0', '0', '25'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('23', '0', '', '风格照片欣赏', '0', '0', '28'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('24', '0', '', '风格照片欣赏', '0', '0', '28'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('25', '0', '', '旅游优惠', '0', '0', '36'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('26', '0', '', '办公家具', '0', '0', '53'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('27', '0', '', '衣柜', '0', '0', '54'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('28', '0', '', '别墅室内装潢', '0', '0', '55'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('29', '0', '', '室内装饰设计', '0', '0', '57'); INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('30', '0', '', '红木', '0', '0', '60');用上述数据,要求结果是什么 老大,结果就是subject id中国 1 北京 8 朝阳区 7 大兴区 9 广东 2 惠州市 4 深圳市 6 福建 5 福州市 11要两列,一列subject,一列id http://blog.csdn.net/acmain_chm/article/details/4142971MySQL中进行树状所有子节点的查询在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们... 老大我提问前已经看过你的blog,我希望知道用left join如何实现。 似乎只有1层,LEFT JOIN ON A.UPID=B.ID设置1个字段用来排序,将所有子ID排在主ID下 mysql> select * from pre_plugin_dzcms_sj_cptype;+----+------+-----------+--------------+--------------+------+-----+| id | upid | subid | subject | displayorder | lcxs | uid |+----+------+-----------+--------------+--------------+------+-----+| 1 | 0 | | 婚纱 | 0 | 0 | 3 || 2 | 0 | | 汽车美容 | 0 | 0 | 1 || 3 | 0 | | 轮胎销售 | 0 | 0 | 1 || 4 | 0 | 6,7,10,11 | 手机 | 0 | 0 | 14 || 5 | 0 | 8 | 笔记本 | 0 | 0 | 14 || 6 | 4 | | 苹果 | 0 | 0 | 14 || 7 | 4 | | 三星 | 0 | 0 | 14 || 8 | 5 | | 联想 | 0 | 0 | 14 || 10 | 4 | | 小米 | 0 | 0 | 14 || 11 | 4 | | 安卓 | 0 | 0 | 14 || 12 | 0 | 13 | 温泉 | 0 | 0 | 18 || 13 | 12 | | 活动 | 0 | 0 | 18 || 14 | 0 | 15,16 | 用品 | 0 | 0 | 18 || 15 | 14 | | 泳衣 | 0 | 0 | 18 || 16 | 14 | | 泳裤 | 0 | 0 | 18 || 17 | 0 | | 婚纱照 | 0 | 0 | 20 || 18 | 0 | | 婚纱照 | 0 | 0 | 21 || 19 | 0 | | 婚纱照 | 0 | 0 | 22 || 20 | 0 | | 风格照欣赏 | 0 | 0 | 25 || 21 | 0 | | 风格照欣赏 | 0 | 0 | 25 || 22 | 0 | | 风格照欣赏 | 0 | 0 | 25 || 23 | 0 | | 风格照片欣赏 | 0 | 0 | 28 || 24 | 0 | | 风格照片欣赏 | 0 | 0 | 28 || 25 | 0 | | 旅游优惠 | 0 | 0 | 36 || 26 | 0 | | 办公家具 | 0 | 0 | 53 || 27 | 0 | | 衣柜 | 0 | 0 | 54 || 28 | 0 | | 别墅室内装潢 | 0 | 0 | 55 || 29 | 0 | | 室内装饰设计 | 0 | 0 | 57 || 30 | 0 | | 红木 | 0 | 0 | 60 |+----+------+-----------+--------------+--------------+------+-----+29 rows in set (0.00 sec)mysql> select id,subject,null,null,id as o -> from pre_plugin_dzcms_sj_cptype -> where upid=0 -> union all -> select null,null,b.id,b.subject,a.id -> from pre_plugin_dzcms_sj_cptype a inner join pre_plugin_dzcms_sj_cptype b on a.id=b.upid -> where a.upid=0 -> order by o,id is null;+------+--------------+------+------+----+| id | subject | NULL | NULL | o |+------+--------------+------+------+----+| 1 | 婚纱 | NULL | NULL | 1 || 2 | 汽车美容 | NULL | NULL | 2 || 3 | 轮胎销售 | NULL | NULL | 3 || 4 | 手机 | NULL | NULL | 4 || NULL | NULL | 7 | 三星 | 4 || NULL | NULL | 10 | 小米 | 4 || NULL | NULL | 11 | 安卓 | 4 || NULL | NULL | 6 | 苹果 | 4 || 5 | 笔记本 | NULL | NULL | 5 || NULL | NULL | 8 | 联想 | 5 || 12 | 温泉 | NULL | NULL | 12 || NULL | NULL | 13 | 活动 | 12 || 14 | 用品 | NULL | NULL | 14 || NULL | NULL | 15 | 泳衣 | 14 || NULL | NULL | 16 | 泳裤 | 14 || 17 | 婚纱照 | NULL | NULL | 17 || 18 | 婚纱照 | NULL | NULL | 18 || 19 | 婚纱照 | NULL | NULL | 19 || 20 | 风格照欣赏 | NULL | NULL | 20 || 21 | 风格照欣赏 | NULL | NULL | 21 || 22 | 风格照欣赏 | NULL | NULL | 22 || 23 | 风格照片欣赏 | NULL | NULL | 23 || 24 | 风格照片欣赏 | NULL | NULL | 24 || 25 | 旅游优惠 | NULL | NULL | 25 || 26 | 办公家具 | NULL | NULL | 26 || 27 | 衣柜 | NULL | NULL | 27 || 28 | 别墅室内装潢 | NULL | NULL | 28 || 29 | 室内装饰设计 | NULL | NULL | 29 || 30 | 红木 | NULL | NULL | 30 |+------+--------------+------+------+----+29 rows in set (0.00 sec)mysql> 不是我要的效果,我要的是两列,一列是id,一列是带缩进的subject mysql> select id,subject from ( -> select id,subject,id as o,1 as k -> from pre_plugin_dzcms_sj_cptype -> where upid=0 -> union all -> select b.id,concat(' ',b.subject),a.id,2 as k -> from pre_plugin_dzcms_sj_cptype a inner join pre_plugin_dzcms_sj_cptype b on a.id=b.upid -> where a.upid=0 -> ) t -> order by o,k;+----+--------------+| id | subject |+----+--------------+| 1 | 婚纱 || 2 | 汽车美容 || 3 | 轮胎销售 || 4 | 手机 || 6 | 苹果 || 7 | 三星 || 10 | 小米 || 11 | 安卓 || 5 | 笔记本 || 8 | 联想 || 12 | 温泉 || 13 | 活动 || 14 | 用品 || 15 | 泳衣 || 16 | 泳裤 || 17 | 婚纱照 || 18 | 婚纱照 || 19 | 婚纱照 || 20 | 风格照欣赏 || 21 | 风格照欣赏 || 22 | 风格照欣赏 || 23 | 风格照片欣赏 || 24 | 风格照片欣赏 || 25 | 旅游优惠 || 26 | 办公家具 || 27 | 衣柜 || 28 | 别墅室内装潢 || 29 | 室内装饰设计 || 30 | 红木 |+----+--------------+29 rows in set (0.06 sec)mysql> 如果将多个查询结果保存到同一个字段里? mysqldump的一个错误 关于DOMINO利用ODBC访问MYSQL的问题 mysqlreport分析 如何设计表 如何获取MySQL数据库的字段的数据类型信息? MySQL下如何给一个日期字段赋默认值 求EMS mysql manager2.6.0.1注册码! 关于触发器trigger的问题,触发器的触发条件是否可以限制在满足条件的某几行 MySQL安装时报错2013 多关键字搜索 怎么查询出树形,不超过3层,200分
subject id
中国 1
北京 8
朝阳区 7
大兴区 9
广东 2
惠州市 4
深圳市 6
福建 5
福州市 11
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('2', '0', '', '汽车美容', '0', '0', '1');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('3', '0', '', '轮胎销售', '0', '0', '1');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('4', '0', '6,7,10,11', '手机', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('5', '0', '8', '笔记本', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('6', '4', '', '苹果', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('7', '4', '', '三星', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('8', '5', '', '联想', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('10', '4', '', '小米', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('11', '4', '', '安卓', '0', '0', '14');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('12', '0', '13', '温泉', '0', '0', '18');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('13', '12', '', '活动', '0', '0', '18');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('14', '0', '15,16', '用品', '0', '0', '18');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('15', '14', '', '泳衣', '0', '0', '18');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('16', '14', '', '泳裤', '0', '0', '18');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('17', '0', '', '婚纱照', '0', '0', '20');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('18', '0', '', '婚纱照', '0', '0', '21');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('19', '0', '', '婚纱照', '0', '0', '22');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('20', '0', '', '风格照欣赏', '0', '0', '25');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('21', '0', '', '风格照欣赏', '0', '0', '25');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('22', '0', '', '风格照欣赏', '0', '0', '25');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('23', '0', '', '风格照片欣赏', '0', '0', '28');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('24', '0', '', '风格照片欣赏', '0', '0', '28');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('25', '0', '', '旅游优惠', '0', '0', '36');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('26', '0', '', '办公家具', '0', '0', '53');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('27', '0', '', '衣柜', '0', '0', '54');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('28', '0', '', '别墅室内装潢', '0', '0', '55');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('29', '0', '', '室内装饰设计', '0', '0', '57');
INSERT INTO `pre_plugin_dzcms_sj_cptype` VALUES ('30', '0', '', '红木', '0', '0', '60');用上述数据,要求结果是什么
subject id
中国 1
北京 8
朝阳区 7
大兴区 9
广东 2
惠州市 4
深圳市 6
福建 5
福州市 11
要两列,一列subject,一列id
MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...
老大我提问前已经看过你的blog,我希望知道用left join如何实现。
设置1个字段用来排序,将所有子ID排在主ID下
+----+------+-----------+--------------+--------------+------+-----+
| id | upid | subid | subject | displayorder | lcxs | uid |
+----+------+-----------+--------------+--------------+------+-----+
| 1 | 0 | | 婚纱 | 0 | 0 | 3 |
| 2 | 0 | | 汽车美容 | 0 | 0 | 1 |
| 3 | 0 | | 轮胎销售 | 0 | 0 | 1 |
| 4 | 0 | 6,7,10,11 | 手机 | 0 | 0 | 14 |
| 5 | 0 | 8 | 笔记本 | 0 | 0 | 14 |
| 6 | 4 | | 苹果 | 0 | 0 | 14 |
| 7 | 4 | | 三星 | 0 | 0 | 14 |
| 8 | 5 | | 联想 | 0 | 0 | 14 |
| 10 | 4 | | 小米 | 0 | 0 | 14 |
| 11 | 4 | | 安卓 | 0 | 0 | 14 |
| 12 | 0 | 13 | 温泉 | 0 | 0 | 18 |
| 13 | 12 | | 活动 | 0 | 0 | 18 |
| 14 | 0 | 15,16 | 用品 | 0 | 0 | 18 |
| 15 | 14 | | 泳衣 | 0 | 0 | 18 |
| 16 | 14 | | 泳裤 | 0 | 0 | 18 |
| 17 | 0 | | 婚纱照 | 0 | 0 | 20 |
| 18 | 0 | | 婚纱照 | 0 | 0 | 21 |
| 19 | 0 | | 婚纱照 | 0 | 0 | 22 |
| 20 | 0 | | 风格照欣赏 | 0 | 0 | 25 |
| 21 | 0 | | 风格照欣赏 | 0 | 0 | 25 |
| 22 | 0 | | 风格照欣赏 | 0 | 0 | 25 |
| 23 | 0 | | 风格照片欣赏 | 0 | 0 | 28 |
| 24 | 0 | | 风格照片欣赏 | 0 | 0 | 28 |
| 25 | 0 | | 旅游优惠 | 0 | 0 | 36 |
| 26 | 0 | | 办公家具 | 0 | 0 | 53 |
| 27 | 0 | | 衣柜 | 0 | 0 | 54 |
| 28 | 0 | | 别墅室内装潢 | 0 | 0 | 55 |
| 29 | 0 | | 室内装饰设计 | 0 | 0 | 57 |
| 30 | 0 | | 红木 | 0 | 0 | 60 |
+----+------+-----------+--------------+--------------+------+-----+
29 rows in set (0.00 sec)mysql> select id,subject,null,null,id as o
-> from pre_plugin_dzcms_sj_cptype
-> where upid=0
-> union all
-> select null,null,b.id,b.subject,a.id
-> from pre_plugin_dzcms_sj_cptype a inner join pre_plugin_dzcms_sj_cptype b on a.id=b.upid
-> where a.upid=0
-> order by o,id is null;
+------+--------------+------+------+----+
| id | subject | NULL | NULL | o |
+------+--------------+------+------+----+
| 1 | 婚纱 | NULL | NULL | 1 |
| 2 | 汽车美容 | NULL | NULL | 2 |
| 3 | 轮胎销售 | NULL | NULL | 3 |
| 4 | 手机 | NULL | NULL | 4 |
| NULL | NULL | 7 | 三星 | 4 |
| NULL | NULL | 10 | 小米 | 4 |
| NULL | NULL | 11 | 安卓 | 4 |
| NULL | NULL | 6 | 苹果 | 4 |
| 5 | 笔记本 | NULL | NULL | 5 |
| NULL | NULL | 8 | 联想 | 5 |
| 12 | 温泉 | NULL | NULL | 12 |
| NULL | NULL | 13 | 活动 | 12 |
| 14 | 用品 | NULL | NULL | 14 |
| NULL | NULL | 15 | 泳衣 | 14 |
| NULL | NULL | 16 | 泳裤 | 14 |
| 17 | 婚纱照 | NULL | NULL | 17 |
| 18 | 婚纱照 | NULL | NULL | 18 |
| 19 | 婚纱照 | NULL | NULL | 19 |
| 20 | 风格照欣赏 | NULL | NULL | 20 |
| 21 | 风格照欣赏 | NULL | NULL | 21 |
| 22 | 风格照欣赏 | NULL | NULL | 22 |
| 23 | 风格照片欣赏 | NULL | NULL | 23 |
| 24 | 风格照片欣赏 | NULL | NULL | 24 |
| 25 | 旅游优惠 | NULL | NULL | 25 |
| 26 | 办公家具 | NULL | NULL | 26 |
| 27 | 衣柜 | NULL | NULL | 27 |
| 28 | 别墅室内装潢 | NULL | NULL | 28 |
| 29 | 室内装饰设计 | NULL | NULL | 29 |
| 30 | 红木 | NULL | NULL | 30 |
+------+--------------+------+------+----+
29 rows in set (0.00 sec)mysql>
不是我要的效果,我要的是两列,一列是id,一列是带缩进的subject
-> select id,subject,id as o,1 as k
-> from pre_plugin_dzcms_sj_cptype
-> where upid=0
-> union all
-> select b.id,concat(' ',b.subject),a.id,2 as k
-> from pre_plugin_dzcms_sj_cptype a inner join pre_plugin_dzcms_sj_cptype b on a.id=b.upid
-> where a.upid=0
-> ) t
-> order by o,k;
+----+--------------+
| id | subject |
+----+--------------+
| 1 | 婚纱 |
| 2 | 汽车美容 |
| 3 | 轮胎销售 |
| 4 | 手机 |
| 6 | 苹果 |
| 7 | 三星 |
| 10 | 小米 |
| 11 | 安卓 |
| 5 | 笔记本 |
| 8 | 联想 |
| 12 | 温泉 |
| 13 | 活动 |
| 14 | 用品 |
| 15 | 泳衣 |
| 16 | 泳裤 |
| 17 | 婚纱照 |
| 18 | 婚纱照 |
| 19 | 婚纱照 |
| 20 | 风格照欣赏 |
| 21 | 风格照欣赏 |
| 22 | 风格照欣赏 |
| 23 | 风格照片欣赏 |
| 24 | 风格照片欣赏 |
| 25 | 旅游优惠 |
| 26 | 办公家具 |
| 27 | 衣柜 |
| 28 | 别墅室内装潢 |
| 29 | 室内装饰设计 |
| 30 | 红木 |
+----+--------------+
29 rows in set (0.06 sec)mysql>