如何为我的请求编写seff连接查询 [英] how to write seff join query for my retquirement

查看:98
本文介绍了如何为我的请求编写seff连接查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建表格



 创建  table  mytable1 

id int
name varchar 20 ),
mid varchar 20





  insert   into  mytable1  values  1 '  A'
插入 进入 mytable1 values 2 ' B' 1
插入 进入 mytable1 3 ' C'
插入 进入 mytable1 4 ' D' 1





 id name mid 
===========
1 A null
2 B 1
3 C null
4 D 1



我需要使用自我加入来编写查询以获得以下输出



 name mid 
===========
null
BA
C null
DA

解决方案

  S选择 
X.name,Y.name as name
From mytable1 X
加入 mytable1 Y on (X.id = Y.mid)


试试这个



< pre lang =sql> SELECT a.name,B.name as mid FROM mytable1 A
LEFT OUTER JOIN
SELECT ID,名称 FROM mytable1 WHERE mid null )B
ON A.mid = B.id


,因为你将mid作为整数值传递你改变了数据类型为mid到int,查询执行速度会更快。

以下示例基于mid为int

 选择 e.name  as 名称,m.name   MID 来自 mytable1  as  e 
left outer join mytable1 as
m on m.id = e.mid;


I create table

create table mytable1
(
  id int,
  name varchar(20),
  mid varchar(20)
)



insert into mytable1 values(1,'A',Null)
insert into mytable1 values(2,'B',1)
insert into mytable1 values(3,'C',Null)
insert into mytable1 values(4,'D',1)



id name mid
===========
1   A    null
2   B     1
3   C    null
4   D     1


I need to write the query using self join to get the following output

 name mid
===========
  A    null
  B     A
  C    null
  D     A

解决方案

Select
X.name,Y.name as name
From mytable1 X
Left Join mytable1 Y on (X.id = Y.mid)


try this

SELECT a.name, B.name as mid FROM mytable1 A
LEFT OUTER JOIN
(SELECT Id,name FROM mytable1 WHERE mid is null)  B
ON A.mid=B.id


since you pass mid as integer values if you change your data type of mid to int, query execution will be faster.
following sample is based on mid as int

select e.name as Name,m.name as MID from mytable1 as e
left outer join mytable1 as
m on m.id = e.mid;


这篇关于如何为我的请求编写seff连接查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆