join和on语句中select语句选择公共列的区别
admin
2023-05-04 15:41:38
0

  对多个表进行join时,在select语句中,如果使用using语句,则using语句中选中的列,在select语句中不能指定限定词,否则会报ORA-25154

查看emp表

SQL> select * from emp;
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7369 SMITH      CLERK      7902 1980/12/17     800.00               20
 7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
 7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
 7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
 7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
 7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
 7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
 7900 JAMES      CLERK      7698 1981/12/3      950.00               30
 7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
 7934 MILLER     CLERK      7782 1982/1/23     1300.00               10

查看dept表

SQL> select * from dept;
DEPTNO DNAME          LOC
------ -------------- -------------
    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
    40 OPERATIONS     BOSTON

在select语句中使用using语句中指定的列,添加限定词

SQL> select e.deptno,e.sal,d.dname from emp e join dept d using(deptno)
ORA-25154: USING 子句的列部分不能有限定词

不添加时

SQL> select deptno,e.sal,d.dname from emp e join dept d using(deptno);
DEPTNO       SAL DNAME
------ --------- --------------
    10   2450.00 ACCOUNTING
    10   5000.00 ACCOUNTING
    10   1300.00 ACCOUNTING
    20   2975.00 RESEARCH
    20   3000.00 RESEARCH
    20   1100.00 RESEARCH
    20    800.00 RESEARCH
    20   3000.00 RESEARCH
    30   1250.00 SALES
    30   1500.00 SALES
    30   1600.00 SALES
    30    950.00 SALES
    30   2850.00 SALES
    30   1250.00 SALES
14 rows selected

而使用on时,则必须指定限定词才能正确的显示,否则会报错,提示deptno未能识别是哪个表,因为dept和emp表中都有deptno列

 select deptno,e.sal,d.dname from emp e join dept d on(e.deptno=d.deptno);
select deptno,e.sal,d.dname from emp e join dept d on(e.deptno=d.deptno)
ORA-00918: 未明确定义列

给deptno添加限定词,就可以正常显示了

SQL> select e.deptno,e.sal,d.dname from emp e join dept d on(e.deptno=d.deptno);
DEPTNO       SAL DNAME
------ --------- --------------
    10   2450.00 ACCOUNTING
    10   5000.00 ACCOUNTING
    10   1300.00 ACCOUNTING
    20   2975.00 RESEARCH
    20   3000.00 RESEARCH
    20   1100.00 RESEARCH
    20    800.00 RESEARCH
    20   3000.00 RESEARCH
    30   1250.00 SALES
    30   1500.00 SALES
    30   1600.00 SALES
    30    950.00 SALES
    30   2850.00 SALES
    30   1250.00 SALES
14 rows selected


在使用using时,对select语句中的选定using指定的列时,无需指定限定词

在使用on时,必须在select语句中对on语句条件中的条件列添加限定词。

相关内容

热门资讯

Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...
5G+165Hz!联想新品官宣... 近两年来,小屏平板一直是比较有趣的一个品类。 不同于大平板注重效率、手机追求万能的特点,拯救者Y70...
原创 马... 马斯克又出来了。这次说2036年钱就没用了。 理由是人工智能加机器人,东西多到你用不完,还拿钱干嘛...
美的集团:我国智能家居互联互通... IT之家 7 月 30 日消息,美的集团今日发布公告,7 月 21 日至 23 日,智能家居互联互通...
华为新款MatePad Pro... 【CNMO科技消息】7月30日,@华为终端 官宣全新旗舰平板华为MatePad Pro。 新款华为...
从实验室到实景验证:6G光子太... 全息通信是第六代移动通信(6G)的典型应用场景之一,旨在通过融合无线传输与全息三维成像技术,实现超大...
从“能对话”到“能干活”——人... 【经济界面】 光明日报记者 刘坤 李晓东 周洪双 人工智能(AI)眼镜化身为个人“助理”,实时进行...
【全新发布】UminiP Pr... (来源:洲明科技)
日本通过“H3火箭8号”发射失... △H3火箭(资料图) 日本文部科学省30日召开关于去年“H3火箭8号”发射失败的会议。会议通过的最终...
互联网巨头抢滩健康硬件,上游芯... 封面新闻记者 付文超 当下,互联网巨头对健康硬件的押注,正在成为产业现实,加速拉动整个产业链步入新一...