你好朋友我在连接查询中有一些困惑,所以对于我写的子查询一样。
我的数据库设计就像:table name = dbtest
------------------------
| id | name | relation |
------------------------
| 1 | abc | 2 |
| 2 | bbc | 0 |
| 3 | kbc | 2 |
| 4 | xyz | 3 |
------------------------
我希望输出与谁有关。
如果我输入id = 4
,则应返回xyz => kbc
通过子查询到目前为止我已经实现kbc
只有
我的子查询是:select name from dbtest where id = (select relation from dbtest where id = '3');
任何好友都可以帮助我使用联接查询获得所需的输出吗?
答案 0 :(得分:1)
select name
from dbtest
where id = (
select relation
from dbtest
where id = '3'
);
(你的)相当于(s是内部选择,r是外部选择)
select r.name
from dbtest s
join dbtest r
on r.id = s.relation
where s.id = '3'
答案 1 :(得分:1)
我设法通过此查询获得关系xyz => kbc
:
SELECT a.name, b.name from dbtest a, dbtest b where a.id = 4 and a.relation = b.id
编辑:这是使用JOIN的相同查询
SELECT a.name, b.name FROM dbtest a JOIN dbtest b ON a.relation = b.id WHERE a.id = 4
答案 2 :(得分:0)
select d.name,d.id,db.relation from dbtest d, dbtest db where d.id = db.relation;
这是自我加入...希望它有所帮助
答案 3 :(得分:0)
试试这个:
select a.id,a.name,b.name,b.relation
from dbtest a,dbtest b where a.id=b.relation
答案 4 :(得分:-1)
select name from dbtest where relation ='3';
OR
//if id is dynamic value
select name from dbtest where relation ='$id';