Mysql 如何为已编写的子查询编写联接查询?
你好,朋友们,我在加入查询中有一些混乱,所以对于相同的问题,我已经编写了子查询。 我的数据库设计如下:table name=dbtest 我想要根据谁与谁相关的输出 假设如果我输入id=4,它应该返回xyz=>kbc 通过子查询到目前为止我所实现的是kbc唯一的 我的子查询是:selectname fromtdbtest,其中id=selectrelationfromtdbtest,其中id='3' 任何好友都可以帮助我使用joinquery获得所需的输出吗Mysql 如何为已编写的子查询编写联接查询?,mysql,sql,performance,Mysql,Sql,Performance,你好,朋友们,我在加入查询中有一些混乱,所以对于相同的问题,我已经编写了子查询。 我的数据库设计如下:table name=dbtest 我想要根据谁与谁相关的输出 假设如果我输入id=4,它应该返回xyz=>kbc 通过子查询到目前为止我所实现的是kbc唯一的 我的子查询是:selectname fromtdbtest,其中id=selectrelationfromtdbtest,其中id='3' 任何好友都可以帮助我使用joinquery获得所需的输出吗 select d.name,d.id
select d.name,d.id,db.relation from dbtest d, dbtest db where d.id = db.relation;
这是自连接。。。希望能有帮助
select name
from dbtest
where id = (
select relation
from dbtest
where id = '3'
);
这是自连接。。。希望能有帮助
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'
你的相当于s是内部选择,r是外部选择
select r.name
from dbtest s
join dbtest r
on r.id = s.relation
where s.id = '3'
试试这个:
select a.id,a.name,b.name,b.relation
from dbtest a,dbtest b where a.id=b.relation
试试这个:
select a.id,a.name,b.name,b.relation
from dbtest a,dbtest b where a.id=b.relation
我通过以下查询获得了关系xyz=>kbc:
SELECT a.name, b.name from dbtest a, dbtest b where a.id = 4 and a.relation = b.id
编辑:这是使用联接的同一查询
SELECT a.name, b.name FROM dbtest a JOIN dbtest b ON a.relation = b.id WHERE a.id = 4
我通过以下查询获得了关系xyz=>kbc:
SELECT a.name, b.name from dbtest a, dbtest b where a.id = 4 and a.relation = b.id
编辑:这是使用联接的同一查询
SELECT a.name, b.name FROM dbtest a JOIN dbtest b ON a.relation = b.id WHERE a.id = 4
@menomore:是的,它只返回bbc,但我希望kbc与bbc相关。你明白我在做什么吗?@menomore:是的,它只返回bbc,但我希望kbc与bbc相关。你明白我在做什么吗?哪一个更有效?@RPM I/O方面,它们应该是相同的。就速度而言,它们应该几乎相同。唯一的区别是解析器和执行器采用哪种代码分支。我喜欢第一个查询的方式looks@RPMOP请求一个基于连接的查询,所以这里我给出了哪一个更有效?@RPM I/O-wise,它们应该是相同的。就速度而言,它们应该几乎相同。唯一的区别是解析器和执行器采用哪种代码分支。我喜欢第一个查询的方式looks@RPMOP要求一个基于连接的查询,所以这里我给出了一个C'mon,逗号连接不好。另外,你的b.id是无限的。拜托,逗号连接不好。另外,你的b.id是无限的。拜托,逗号连接不好。嗨,简·德沃夏克,你能解释一下为什么它不好吗?我一直在使用它,直到现在,我想知道它是否有任何弱点。谢谢逗号联接没有ON子句。你必须把它加入WHERE子句。这使得它更容易忘记,而且是非语义的。此外,逗号联接比显式联接具有更高的优先级,并且逗号左联接没有标准语法。@christianhs:我们可以使用联接来实现更好的性能吗?@Keturshah从技术上讲,逗号联接是一种联接。这更难看。拜托,逗号连接不好嗨,简·德沃夏克,你能解释一下为什么它不好吗?我一直在使用它,直到现在,我想知道它是否有任何弱点。谢谢逗号联接没有ON子句。你必须把它加入WHERE子句。这使得它更容易忘记,而且是非语义的。此外,逗号联接比显式联接具有更高的优先级,并且逗号左联接没有标准语法。@christianhs:我们可以使用联接来实现更好的性能吗?@Keturshah从技术上讲,逗号联接是一种联接。这更难看。拜托,逗号连接不好拜托,逗号连接不好