Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách nhận tất cả các kết hợp có thể có của các hàng từ hai bảng trong SQL

Vấn đề:

Bạn muốn nhận tất cả các tổ hợp hàng từ hai bảng trong SQL.

Ví dụ:

Đây là hai bảng:một bảng chứa các chữ cái (letters ) và cái kia chứa số (numbers ):

letter
X
Y
number
0
1
2

Giải pháp 1:

Để kết hợp mọi hàng của letters bảng với mọi hàng của numbers , chúng tôi sẽ sử dụng CROSS JOIN :

SELECT *
FROM letters
CROSS JOIN numbers;

Kết quả của truy vấn trông giống như sau:

letter số
X 0
Y 0
X 1
Y 1
X 2
Y 2

Giải pháp 2:

Một cách khác để thực hiện CROSS JOIN như sau:

SELECT *
FROM letters, numbers;

Điều này sẽ nhận được cùng một kết quả được tạo ra bởi truy vấn trước đó.

Thảo luận:

Theo quy tắc chung, CROSS JOIN tạo ra một tập hợp kết quả trong đó mọi hàng từ một bảng này được nối với mọi hàng của bảng khác. Nói cách khác, nếu bảng đầu tiên lưu trữ n hàng và bảng thứ hai lưu trữ m hàng, sau đó là CROSS JOIN sẽ dẫn đến một sản phẩm Descartes trong tổng số n × m hàng. Đây là lý do tại sao có sáu hàng được trả về bởi truy vấn trong ví dụ trên.

CROSS JOIN tạo ra tất cả các kết hợp có thể có của các hàng trong số các bảng đang được nối, không cần chỉ định mối quan hệ. Vì vậy, không giống như các JOINs khác , không có ON mệnh đề trong CROSS JOIN .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm việc với dữ liệu Java trong Qlik Sense

  2. Ngôn ngữ truy vấn có cấu trúc - Tầm quan trọng của việc học SQL

  3. Cơ sở dữ liệu là gì? Và một DBMS?

  4. Cách đạt được chuyển đổi dự phòng tự động cho TimescaleDB

  5. Di chuyển giản đồ:Liên quan đến Dấu sao