Mysql 简明教程
MySQL - Cross Join
MySQL Cross Join
将第一张表的每一行与第二张表的每一行组合在一起 MySQL Cross Join 。这是一种基本的内部连接类型,用于检索两个单独表的笛卡尔乘积(或交叉乘积)(即排列)。
以下示例图以简单的方式说明了交叉连接。
Example
在这个交叉连接的示例中,我们首先创建一个名为 CUSTOMERS 的表,其中包含客户的个人详细信息,包括姓名、年龄、地址和薪水等。
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在使用 INSERT 语句向该表中插入值,如下所示:
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 );
该表将被创建为:
让我们创建一个另一个表 ORDERS ,其中包含已下的订单及其下的日期。
CREATE TABLE ORDERS (
OID INT NOT NULL,
DATE VARCHAR (20) NOT NULL,
CUSTOMER_ID INT NOT NULL,
AMOUNT DECIMAL (18, 2),
);
使用 INSERT 语句像下面这样向该表中插入值:
INSERT INTO ORDERS VALUES
(100, '2009-10-08 00:00:00', 3, 1500.00),
(101, '2009-11-20 00:00:00', 2, 1560.00);
该表显示如下:
现在,如果我们对上面给出的这两个表执行以下 Cross Join query ,交叉连接将会将 CUSTOMERS 表中的每一行与 ORDERS 表中的每一行组合在一起。
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
CROSS JOIN ORDERS;
Joining Multiple Tables with Cross Join
我们也可以使用交叉连接连接多于两张表。在这种情况下,将显示多路排列,结果表预计将比单独的表包含更多的记录。
Syntax
下面是使用 MySQL 中的交叉连接连接多张表的语法 −
SELECT column_name(s)
FROM table1
CROSS JOIN table2
CROSS JOIN table3
CROSS JOIN table4
.
.
.
Example
现在组合三张表 CUSTOMERS、ORDERS 和 ORDER_RANGE,以使用交叉连接演示组合多张表。
将使用以下查询创建 ORDER_RANGE 表 −
CREATE TABLE ORDER_RANGE (
SNO INT NOT NULL,
ORDER_RANGE VARCHAR (20) NOT NULL,
);
现在,我们可以使用 INSERT 语句将值插入到此空表中,如下所示:
INSERT INTO ORDER_RANGE VALUES
(1, '1-100'),
(2, '100-200'),
(3, '200-300');
ORDER_RANGE 表如下 −
现在对给定的表使用以下交叉连接查询,
SELECT ID, NAME, AMOUNT, DATE, ORDER_RANGE
FROM CUSTOMERS
CROSS JOIN ORDERS
CROSS JOIN ORDER_RANGE;