1、交叉连接(cross join)
CROSSJOIN连接用于生成两张表的笛卡尔集。
在sql中cross join的使用:
1)返回的记录数为两个表的记录数乘积。
2)将A表的所有行分别与B表的所有行进行连接。
结果表: 列= 原表列数相加
行= 原表行数相乘
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 1760.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
8888 测试数据 旺旺 1888 1982/1/23 1300.00 10
15 rows selected
SQL> select *from dept;
DEPTNO DNAME LOC
-------------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select *from emp a cross join dept;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO DNAME LOC
----- ------------------- ----- ----------- --------- --------- ------ ------ ---------------------------
7369 SMITH CLERK 7902 1980/12/17 800.00 20 10 ACCOUNTING NEW YORK
7499 ALLEN SALESMAN 7698 1981/2/20 1760.00 300.00 30 10 ACCOUNTING NEW YORK
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30 10 ACCOUNTING NEW YORK
7566 JONES MANAGER 7839 1981/4/2 2975.00 20 10 ACCOUNTING NEW YORK
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30 10 ACCOUNTING NEW YORK
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30 10 ACCOUNTING NEW YORK
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 10 ACCOUNTING