有这样一张表folder:三个字段id,name,pid
现在需要这样的数据:
id,name,pname其中pname是根据pid在folder这张表中查询到的,如果pid=0,那就显示空比如数据如下:
id name pid
1 aa 0
2 bb 1
3 cc 2
4 dd 0得到的数据应该是
id name pname
1 aa
2 bb aa
3 cc bb
4 dd 这样能直接用一个sql写出来吗?
现在需要这样的数据:
id,name,pname其中pname是根据pid在folder这张表中查询到的,如果pid=0,那就显示空比如数据如下:
id name pid
1 aa 0
2 bb 1
3 cc 2
4 dd 0得到的数据应该是
id name pname
1 aa
2 bb aa
3 cc bb
4 dd 这样能直接用一个sql写出来吗?
解决方案 »
- mysql workbench 对路径:“c:\...\M...Workbench CE 5.2.35\db_utils.pyc的访问被拒绝
- 大家看看数据库有什么问题,是不是表死锁了?
- 连接mysql时出现错误,在线等!!急急急!!
- 我没有找到重复记录,错误1022:MYSQL关键字重复,更改记录失败
- MYSQL在进行大表查询时报错ERROR CODE 28 C:盘空间不足了!
- mysql 1067错误
- MySQL的分离问题...
- mysql 中,刚刚发现一个很奇怪的问题
- 有关mysql中的sql语法的问题,请高手指点!
- 我想把mysql数据库迁移到ms sql数据库 如何操作?
- 多表更新如何取得更新记录的条数?
- 一个简单的问题
select A.id,A.name,if(B.Name<=>null,'',B.Name) from TTT A left join TTT B on A.Pid=B.ID
mysql> select * from folder;
+------+------+------+
| id | name | pid |
+------+------+------+
| 1 | aa | 0 |
| 2 | bb | 1 |
| 3 | cc | 2 |
| 4 | dd | 0 |
+------+------+------+
4 rows in set (0.02 sec)mysql> select a.id,a.name,b.name
-> from folder a left join folder b
-> on a.pid=b.id;
+------+------+------+
| id | name | name |
+------+------+------+
| 1 | aa | NULL |
| 2 | bb | aa |
| 3 | cc | bb |
| 4 | dd | NULL |
+------+------+------+
4 rows in set (0.02 sec)
mysql> select A.id,A.name,if(B.Name<=>null,'',B.Name) as Pname from TTT A left j
oin TTT B on A.Pid=B.ID;
+------+------+-------+
| id | name | Pname |
+------+------+-------+
| 1 | aa | |
| 2 | bb | aa |
| 3 | cc | bb |
| 4 | dd | |
+------+------+-------+
4 rows in set (0.00 sec)mysql>
from folder a left join folder b on a.pid=b.id