Database
 sql >> Baza danych >  >> RDS >> Database

Jak uzyskać wszystkie możliwe kombinacje wierszy z dwóch tabel w SQL?

Problem:

Chcesz uzyskać wszystkie kombinacje wierszy z dwóch tabel w SQL.

Przykład:

Oto dwie tabele:jedna zawiera litery (letters ), a druga zawiera liczby (numbers ):

list
X
T
liczba
0
1
2

Rozwiązanie 1:

Aby połączyć każdy wiersz letters tabela z każdym wierszem numbers tabeli, użyjemy CROSS JOIN :

SELECT *
FROM letters
CROSS JOIN numbers;

Wynik zapytania wygląda tak:

list liczba
X 0
T 0
X 1
T 1
X 2
T 2

Rozwiązanie 2:

Innym sposobem wykonania CROSS JOIN jest:

SELECT *
FROM letters, numbers;

Spowoduje to uzyskanie dokładnie tego samego wyniku, co poprzednie zapytanie.

Dyskusja:

Z reguły CROSS JOIN tworzy zestaw wyników, w którym każdy wiersz z jednej tabeli jest łączony z każdym wierszem innej tabeli. Innymi słowy, jeśli pierwsza tabela przechowuje n wiersze i druga tabela przechowuje m wierszy, a następnie CROSS JOIN da w wyniku produkt kartezjański z n × m wydziwianie. Dlatego w powyższym przykładzie zapytanie zwraca sześć wierszy.

Ponieważ CROSS JOIN tworzy wszystkie możliwe kombinacje wierszy pomiędzy łączonymi tabelami, nie ma potrzeby określania relacji. Tak więc, w przeciwieństwie do innych JOINs , nie ma ON klauzula w 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. Jak pobrać zestaw znaków za pomocą SUBSTRING w SQL?

  2. Dołącz do 3 tabel w SQL

  3. Typ danych T-SQL Data/godzina

  4. Samouczek dotyczący danych:Korzystanie z funkcji okna

  5. OGG-01224 Adres już w użyciu