有一个表是这样的,A表
ida idb name
1 3 王老五
2 5 李老四
3 4 张老二
4 2 陈老幺
5 1 朱老大
我在工作中遇到这个问题,ida是主键,name是值,可是呢,idb字段保存的也是这张表的主键值 现在需要把ida对应的名字查出来并且也要把idb字段的名字查处来。小弟平时没怎么写过sql,请大哥们给点指导 时间迫在眉睫
select * from A where A.ida in (id,select A.idb from A where A.ida=id); id就是你的参数
师兄 没有查出来
@太极小帅帅: = =!这个……,哪地方错了?
@让我发会呆: 我也不清楚啊
@太极小帅帅: = =!,你不会是copy过去就直接用的吧???
select ida,idb,name from A where ida in (id,select idb from A where ida=id); 有两个地方写上id的
你执行的时候错误信息 难道没有吗?
select a.ida,(select name from A b where b.id=a.idb) idbname,a.name from A a
举例的名字不错
@JameChen: 师兄 谢谢你 查出来了 举例的名字你喜欢就送你吧 哈哈哈哈哈哈哈哈哈哈哈哈
@太极小帅帅:
select a.Name,B.name from A
left join A as B
on A.ida=B.idb
select a.name,b.name
from tablea a
left join tableb b
on a.idb=b.idb
这个类型是表的自连接,这类的问题多半是附属的。到时候你可以百度百度省、市级联的的SQl语句 和这个如出一辙
如上楼所说,确实是自连接
思路:把这一张表看成两张表,假设A表是员工表,B表是老板表,(A表,B表一模一样,都是你的A表)
关键点是连接条件,就是员工表的老板(idb)等于老板表主键ID(ida)
1 select e.ida,e.name,d.ida,d.name 2 from t2 e,t2 d 3 where e.idb=d.ida 4 order by e.ida
第3行代码就是连接条件,
第4行是按照员工ID排序(好看而已)
注明:在oracle下测试没有问题