站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题小第问一个关于oracle语句的问题,刚出道希望指点

小第问一个关于oracle语句的问题,刚出道希望指点

摘要: 小第问一个关于oracle语句的问题,刚出道希望指点


有表a
name:
age:
server_no

表 b
name:
age:
server_no:

有两个字段相同的表我想显示a表和b表中server_no相同的name和age 如何写



select a.name,b.name,a.age,b.age,a.server_no from a,b where a.server_no=b.server_no


要把a 表和b表的name和age都显示在同一列中


用UNION


比较标准的写法:
select a.name,b.name,a.age,b.age,a.server_no from a join b on a.server_no = b.server_no


select a.name+""+b.name,a.age+''+b.age, a.server_no from a,b where a.server_no=b.server_no



select a.name,a.age from a,b where a.server_no=b.server_no


显示都是

name name age age server_no
. . . . .
. . . . .

我的意思是把两个表的name都显示在一起,条件是server_no=6736


name age server_no
. . .
. . .



为select的列组合写个新的名字


tab1
字段
aID
bID

tab2
字段
aID
bID
tab1中有记录:
aID bID
as1 19
as2 19
as3 23
as4 45
tab2中有记录:
aID bID
as2 19
as3 19
as4 19
现在需要查找出两张表中bID相等的且bID=19的记录,应该是5条记录
我用的方法是:
方法1:select tab1.aID,tab2.aID from tab1,tab2 where tab1.bID=tab2.bID and tab2.bID=19
方法2:select tab1.aID,tab2.aID from tab1 join tab2 on tab1.bID=tab2.bID where tab1.bID=19
上面两中方法选出的记录都是6条,为什么出这样的问题,应该怎么做呢?
---------------------------------------------------------------

select * form tab1 where bID=19
union all
select * form tab2 where bID=19


---------------------------------------------------------------

create table tab1
(aID char(10),
bID char(10))
go

insert into tab1(aid,bid) values('as1','19')
insert tab1 values('as2','19')
insert tab1 values('as3','38')
insert tab1 values('as4','45')
go
create table tab2
(aID char(10),
bID char(10))
go
go
insert tab2 values('as2','19')
insert tab2 values('as3','19')
insert tab2 values('as4','19')
go
select * from tab1

select * from tab1 where tab1.bid='19'union all select * from tab2 where tab2.bid='19'


斑竹加的话:
1、join 产生的是笛卡尔积。
2、union 会排除重复的记录
3、union all 不会排除重复的记录记录


支持楼上


select a.name,b.name,a.age,b.age from a,b where a.server_no=b.server_no


↑返回目录
前一篇: 对页面控件如何做validate
后一篇: jsp在LINUX下的环境应该怎么搭建