Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để sử dụng MySQL JOIN mà không có điều kiện BẬT?

Chúng tôi có thể sử dụng 'kết hợp chéo' mà không cần điều kiện. Tham gia chéo cho kết quả ở dạng sản phẩm cartesian. Ví dụ:nếu trong một bảng có 3 bản ghi và một bảng khác có 2 bản ghi, thì bản ghi đầu tiên sẽ khớp với tất cả các bản ghi bảng thứ hai. Sau đó, quá trình tương tự sẽ được lặp lại cho bản ghi thứ hai, v.v.

Ví dụ về kết hợp chéo

Tạo bảng đầu tiên

mysql> CREATE table ForeignTableDemo
   - > (
   - > Id int,
   - > Name varchar(100),
   - > FK int
   - > );
Query OK, 0 rows affected (0.47 sec)

Tạo bảng thứ hai

mysql> CREATE table PrimaryTableDemo
   - > (
   - >  FK int,
   - > Address varchar(100),
   - > primary key(FK)
   - > );
Query OK, 0 rows affected (0.47 sec)

Thêm các ràng buộc

mysql> ALTER table ForeignTableDemo add constraint FKConst foreign key(FK) references PrimaryTableDemo(FK);
Query OK, 0 rows affected (1.54 sec)
Records: 0  Duplicates: 0  Warnings: 0

Để thêm bản ghi vào bảng thứ hai.

mysql> INSERT into PrimaryTableDemo values(1,'US');
Query OK, 1 row affected (0.10 sec)

mysql> INSERT into PrimaryTableDemo values(2,'UK');
Query OK, 1 row affected (0.14 sec)

mysql>  INSERT into PrimaryTableDemo values(3,'Unknown');
Query OK, 1 row affected (0.08 sec)

Hiển thị các bản ghi của bảng thứ hai.

mysql> SELECT * from PrimaryTableDemo;

Sau đây là kết quả của truy vấn trên.

+----+---------+
| FK | Address |
+----+---------+
|  1 | US      |
|  2 | UK      |
|  3 | Unknown |
+----+---------+
3 rows in set (0.00 sec)

Để thêm bản ghi vào bảng đầu tiên.

mysql>  INSERT into ForeignTableDemo values (1,'John',1);
Query OK, 1 row affected (0.20 sec)

mysql>  INSERT into ForeignTableDemo values (2,'Bob',2);
Query OK, 1 row affected (0.27 sec)

Hiển thị các bản ghi bằng lệnh SELECT.

mysql> SELECT * from ForeignTableDemo;

Sau đây là kết quả.

+------+------+------+
| Id   | Name | FK   |
+------+------+------+
|    1 | John |    1 |
|    2 | Bob  |    2 |
+------+------+------+
2 rows in set (0.00 sec)

Chúng tôi đã tạo một ràng buộc khóa ngoại cho tất cả các bảng. Bây giờ, để sử dụng 'kết hợp chéo' mà không BẬT, hãy để chúng tôi xem cú pháp.

mysql> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address
   - > from ForeignTableDemo
   - > cross join PrimaryTableDemo;

Đây là kết quả đầu ra.

+------+------+---------+
| Id   | Name | Address |
+------+------+---------+
|    1 | John | US      |
|    2 | Bob  | US      |
|    1 | John | UK      |
|    2 | Bob  | UK      |
|    1 | John | Unknown |
|    2 | Bob  | Unknown |
+------+------+---------+
6 rows in set (0.00 sec)