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的情况?
本人菜鸟一个,望大大们帮忙。
解决方案 »
- 求优化
- 看看这个触发器 在线等
- J2EE~ORACLE高级技术群(18891623)期待你的加入(名额只有15个哟.......)
- 变量赋值问题
- [菜鸟一问]如何配置oracle服务器,使得其它客户端可以连上数据库,如何连接?
- 两台Oracle10g client sqlplus如何连接server 端呢?
- mannaget console 上午还能进现在进不去了
- 寻找8i升级考试资料
- 上次去一家外企面试的SQL题,没写出来,请写SQL语句的高手请进来看看这个复杂查询怎么写!?
- 新手求教 oracle安装完成后cmd命令行输入sqlplus出错
- 有关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'
再看下结果,就会发现结果互换了