求写一个sql语句

lfkcn 2010-10-22 11:48:50
有这样一张表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写出来吗?
...全文
42 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfkcn 2010-10-22
  • 打赏
  • 举报
回复
多谢诸位,我还需要多学习,结贴
ACMAIN_CHM 2010-10-22
  • 打赏
  • 举报
回复
select a.id,a.name,b.name as pname
from folder a left join folder b on a.pid=b.id
zuoxingyu 2010-10-22
  • 打赏
  • 举报
回复

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>
阿_布 2010-10-22
  • 打赏
  • 举报
回复

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)
zuoxingyu 2010-10-22
  • 打赏
  • 举报
回复

select A.id,A.name,if(B.Name<=>null,'',B.Name) from TTT A left join TTT B on A.Pid=B.ID

56,685

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧