USING中比较特殊的一点是:
使用USING的SQL中对于两张表中共有的同名列,不能指定该列的表名。
例如:t1与t2表中ID列同名.如果在使用using的sql中明确指定了ID列
所属的表。则会报 ORA-25154或ORA-01748。
这点与左连接,右连接,等值连接中需要明确指定列名稍有差异。
SQL> desc t1;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID NUMBER Y
NAME VARCHAR2(10) Y
SQL> desc t2;
Name Type Nullable Default Comments
----- ------ -------- ------- --------
ID NUMBER Y
SCORE NUMBER Y
SQL> SELECT * FROM t1;
ID NAME
---------- ----------
1 king
2 price
SQL> SELECT * FROM t2;
ID SCORE
---------- ----------
1 80
2 90
3 100
SQL> select t1.id, t1.name ,t2.score from t1 join t2 using(t1.id);
select t1.id, t1.name ,t2.score from t1 join t2 using(t1.id)
ORA-01748: 此处只允许简单的列名
SQL> select t1.id, t1.name ,t2.score from t1 join t2 using(id);
select t1.id, t1.name ,t2.score from t1 join t2 using(id)
ORA-25154: USING 子句的列部分不能有限定词
SQL> select id, t1.name ,t2.score from t1 join t2 using(id);
ID NAME SCORE
---------- ---------- ----------
1 king 80
2 price 90
SQL>