我怎样才能为我编写的子查询编写连接查询?

时间:2013-02-19 07:25:50

标签: mysql sql performance

你好朋友我在连接查询中有一些困惑,所以对于我写的子查询一样。   我的数据库设计就像: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');

任何好友都可以帮助我使用联接查询获得所需的输出吗?

5 个答案:

答案 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';