表
ID TYPE NAME PARENT_ID
1 country 中国
2 province 广东 1
3 city 广州 2我想要效果:type name parent
country 中国
province 广东 中国
city 广州 广东怎样用一条sql语句实现?
ID TYPE NAME PARENT_ID
1 country 中国
2 province 广东 1
3 city 广州 2我想要效果:type name parent
country 中国
province 广东 中国
city 广州 广东怎样用一条sql语句实现?
解决方案 »
- innodb 表修复问题,select错误ERROR 1033 (HY000):Incorrect information in file: './blog/b
- 怎么防止MySQL偷懒?CPU占用率为0,但是一个语句处理时间要50ms
- 安装mysql成功 但是/var/lib/mysql 文件目录下是空的 ,没有 mysql test
- mysql存储过程参数处理问题
- 复杂分组语句--mysql 编写
- postgreSQL 如何改变数据源的问题。高手帮帮忙啊!!
- make[2]: *** [libmysql.lo] Error 1这个问题怎么解决!多谢各位相助!
- mysql 可以用存储过程吗?怎么建立存储过程??
- mysql导出数据表的问题
- 从2万多条记录的表中取最新的100条记录要2分钟左右,怎么优化?
- 用mysql数据库 在页面上提取出来有乱码
- 数据库编码问题?
用left join 应该已经是最好的方法了。
只不过是同一个表的两个别名,其它在数据库查询中经常会有这种现象。
但是用这种最上级没有parentId的不能查询出来,怎么解决呢?
不会啊,1楼已经用的是 left join 了,即使 最上级没有parentId 应该也会查出。贴出你的语句和试验结果。
+----+----------+------+-----------+
| id | type | name | parent_id |
+----+----------+------+-----------+
| 1 | country | 中国 | NULL |
| 2 | province | 广东 | 1 |
| 3 | city | 广州 | 2 |
+----+----------+------+-----------+
3 rows in set (0.03 sec)mysql> select t1.type,t1.name,t2.name from tg1 as t1 left join tg1 as t2 on t1.p
arent_id=t2.id;
+----------+------+------+
| type | name | name |
+----------+------+------+
| country | 中国 | NULL |
| province | 广东 | 中国 |
| city | 广州 | 广东 |
+----------+------+------+
3 rows in set (0.00 sec)mysql> desc tg1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| type | varchar(10) | NO | | | |
| name | varchar(20) | NO | | | |
| parent_id | int(11) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)
t2 on t1.parent_id=t2.id;
+----------+------+--------+
| type | name | parent |
+----------+------+--------+
| country | 中国 | NULL |
| province | 广东 | 中国 |
| city | 广州 | 广东 |
+----------+------+--------+
3 rows in set (0.00 sec)