表1:
SysModel(modelId,modelName)
有3条记录
1,model1
2,model2
3,model3
表2:
modelShow(modelShowId,modelId,appointNum)
有4条记录
1,1,111
2,2,222
3,3,null
4,1,222
现在我要一条sql语句,查询出:modelId,modelName,modelShowId,appointNum的值,此查询出来的要求为
表1中所有记录必须显示,且每条记录只显示一次(即现在表1中有3条记录,查询出来的结果一定要是3条记录)
表2中,如果没有对应内容的记录,则所有值显示为空如:我要查找appointNum为111的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,1,111
2,model2,null,null
3,model3,null,null如:我要查找appointNum为222的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,4,222
2,model2,2,222
3,model3,null,null如:我要查找appointNum为333的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,null,null
2,model2,null,null
3,model3,null,null
如果不限定appointNum的值,查询出来的结果
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,null,null
2,model2,null,null
3,model3,null,null求这条语句怎么写?
SysModel(modelId,modelName)
有3条记录
1,model1
2,model2
3,model3
表2:
modelShow(modelShowId,modelId,appointNum)
有4条记录
1,1,111
2,2,222
3,3,null
4,1,222
现在我要一条sql语句,查询出:modelId,modelName,modelShowId,appointNum的值,此查询出来的要求为
表1中所有记录必须显示,且每条记录只显示一次(即现在表1中有3条记录,查询出来的结果一定要是3条记录)
表2中,如果没有对应内容的记录,则所有值显示为空如:我要查找appointNum为111的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,1,111
2,model2,null,null
3,model3,null,null如:我要查找appointNum为222的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,4,222
2,model2,2,222
3,model3,null,null如:我要查找appointNum为333的情况
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,null,null
2,model2,null,null
3,model3,null,null
如果不限定appointNum的值,查询出来的结果
因显示如下记录
modelId,modelName,modelShowId,appointNum
1,model1,null,null
2,model2,null,null
3,model3,null,null求这条语句怎么写?
select distinct(a.modelId) ,a.modelName ,b.modelShowId,b.appointNum SysModel a
left outer join modelShow b on a.modelId=b.modelId
create table SysModel (modelId number,modelName varchar2(10));
insert into SysModel values (1,'model1');
insert into SysModel values (2,'model2');
insert into SysModel values (3,'model3');
create table modelShow (modelShowId number,modelId number,appointNum number);
insert into modelShow values (1,1,111);
insert into modelShow values (2,2,222);
insert into modelShow values (3,3,null);
insert into modelShow values (4,1,222);select a.modelid,a.modelname,b.modelshowid,b.appointnum
from SysModel a left join
( select * from modelShow
where appointnum=222 ) b on a.modelid=b.modelid
order by a.modelid
modelid modelname modelshowid appointnum
------------------------------------------------
1 1 model1 4 222
2 2 model2 2 222
3 3 model3
SELECT A.MODELID,
A.MODELNAME,
B.MODELSHOWID,
B.APPOINTNUM
FROM SYSMODEL A,
(SELECT * FROM MODELSHOW WHERE APPOINTNUM = 111) B
WHERE A.MODELID = B.MODELID(+)
ORDER BY A.MODELID;
可以传入空值 ''或者null 因为有的appointNum值为null 查询appointnum=''或者appointnum=null 和appointnum is null有区别 所以查不到数据 b表就不会返回数据了select a.modelid,a.modelname,b.modelshowid,b.appointnum
from SysModel a left join
( select * from modelShow
where appointnum='') b on a.modelid=b.modelid
order by a.modelid
modelid modelname modelshowid appointnum
------------------------------------------------
1 1 model1
2 2 model2
3 3 model3