sql语句A:select a.* from area a inner join area b on a.code=b.sup_level where b.sup_level='0102'
结果A:
CODE CODE_NAME CODE_DESC SUP_LEVEL SERIES USER_ID
0102 01
0102 01sql语句B:select b.* from area a inner join area b on a.code=b.sup_level where b.sup_level='0102'结果B:
CODE CODE_NAME CODE_DESC SUP_LEVEL SERIES USER_ID
010201 中国 0102
010202 日本 0102问:
(1):关于inner join 时 到底哪个表是主表?
(2):上面的area a 和area b 有什么区别?
(3):上面的结果B是我要的结果,怎么使结果就是B那样,不出现A的情况?
本人菜鸟一个,望大大们帮忙。
结果A:
CODE CODE_NAME CODE_DESC SUP_LEVEL SERIES USER_ID
0102 01
0102 01sql语句B:select b.* from area a inner join area b on a.code=b.sup_level where b.sup_level='0102'结果B:
CODE CODE_NAME CODE_DESC SUP_LEVEL SERIES USER_ID
010201 中国 0102
010202 日本 0102问:
(1):关于inner join 时 到底哪个表是主表?
(2):上面的area a 和area b 有什么区别?
(3):上面的结果B是我要的结果,怎么使结果就是B那样,不出现A的情况?
本人菜鸟一个,望大大们帮忙。
解决方案 »
- linux下项目导出windows下的ORACL数据库的数据
- 在官方网站下的 Oracle 11g 第一版 需要注册吗?
- ORA-06502: PL/SQL: 数字或值错误 原始变量长度过长如何解决?
- 求救数据库同步触发器因该处理那些异常
- oracle中是否存在与informix中“$set lock mode to wait 10;”等效的使用方法?
- 关于Oracle 10g的问题,请问高手我怎样查看用户在什么时候被哪个用户锁定了?(备注:帐户已经解锁了)
- Win2003Server+Oracle的巨强问题...
- 紧急,为什么我的Oracle连接没有办法被别人连接?
- 关于Oracle的查询语句的问题,请高手指点
- oracle数据泵还原无反应,请大神指点
- 有关oracle数据源的问题
- 如何使用外键,需要添加额外的字段主键吗?
做个例子:CREATE TABLE AREA(code VARCHAR2(10),sup_level VARCHAR2(10));
INSERT INTO AREA VALUES('1001','1001');
INSERT INTO AREA VALUES('1002','1001');
INSERT INTO AREA VALUES('1003','1001');
INSERT INTO AREA VALUES('1004','1007');
INSERT INTO AREA VALUES('1005','1009');
INSERT INTO AREA VALUES('1006','1011');
INSERT INTO AREA VALUES('1007','1013');
INSERT INTO AREA VALUES('1008','1015');
INSERT INTO AREA VALUES('1009','1017');
COMMIT;
SQL> select a.* from area a inner join area b on a.code=b.sup_level where b.sup_
level='1001';CODE SUP_LEVEL
---------- ----------
1001 1001
1001 1001
1001 1001SQL> select b.* from area a inner join area b on a.code=b.sup_level where b.sup_
level='1001';CODE SUP_LEVEL
---------- ----------
1001 1001
1002 1001
1003 1001SQL> select A.*,b.* from area a inner join area b on a.code=b.sup_level where b.
sup_level='1001';CODE SUP_LEVEL CODE SUP_LEVEL
---------- ---------- ---------- ----------
1001 1001 1001 1001
1001 1001 1002 1001
1001 1001 1003 1001其实是一样的语句,看你取那个字段了。
最后一个SQL前两列是A.*取到的,后两列是B.*取到的。
我也学习了一下
(2):上面的area a 和area b 有什么区别?
(3):上面的结果B是我要的结果,怎么使结果就是B那样,不出现A的情况?
楼住仔细看下3楼的数据。结论是你的2个sql是一样的,可以把a.*,b.*全列出来看就明白了。
你取的字段不同造成的结果不同,或者说是where b.sup_level='0102' 造成b.*出来的结果全是sup_level='0102' (1)没有主表之说,我是这样认为的
(2)area b 出现的记录要符合 b.sup_level='0102' 这个条件
(3)列出你想要的字段,就象你的第2个sql你可以把条件where b.sup_level='0102' 换成 where a.sup_level='0102'
再看下结果,就会发现结果互换了