Ich habe die folgende Abfrage gefunden und schätze es, wenn mir jemand erklären kann, was das bedeutet.Wählen Sie aus Tabelle1, Tabelle2
Antwort
Dies wird CROSS JOIN
aber in einer alten Syntax mit ,
in FROM
Klausel.
Es erzeugt ein kartesisches Produkt, so dass die Anzahl der Zeilen in der Ergebnismenge wird durch die Anzahl der Zeilen aus table2
(vorausgesetzt, es gibt keine Einschränkungen in der Klausel WHERE
) die Anzahl der Zeilen aus table1
multipliziert. Es verbindet effektiv jede Reihe von table1
mit einer Reihe, die von table2
kommt.
Below Abfrage ist ein äquivalentes aber tut explizite JOIN
Operation, die auf getrennte Tabellen gespeicherten zugehörigen Daten des Verbindens constraint Logik der Datenabruf von logisch trennt:
SELECT *
FROM table1
CROSS JOIN table2
Danke für die Erklärung. –
Sie erhalten alle Zeilen aus Tabelle1 multipliziert mit allen Zeilen aus Tabelle2 und werden abhängig von den Spalten beider Tabellen angezeigt. Wie @sgeddes darauf hingewiesen hat, ein kartesisches Produkt zu erstellen.
Tabelle1 (Sp1, Sp2) mit 4 Aufzeichnungen
Table2 (Col11, Col22, Col33) mit 3 Datensätze
wenn Sie die Abfrage weiter unten verwenden, wird es produzieren NxM Anzahl der Zeilen (Cartesian Join)
select * from table1, table2
Die Ergebnis- und Spaltensequenz aus beiden Tabellen wäre unten mit 4 x 3 = 12 Records angegeben. Col1, Col2, Col11, Col22, Col33
- 1. Wählen Sie Zeilen aus Tabelle1 und (row = row_from_table1) aus Tabelle2
- 2. Einfügen in Tabelle1 Wählen Sie * aus einer anderen Tabelle2, dann löschen Sie die Zeile aus Tabelle2
- 3. Einfügen in Tabelle1 aus Tabelle2 mit Bedingung
- 4. Wählen Sie Zeilen aus Tabelle1 und alle untergeordneten Objekte aus Tabelle2 in ein Objekt
- 5. Wählen Sie die Ergebnisse aus Tabelle1 basierend auf den Einträgen in Tabelle2
- 6. Einfügen von Daten mit Identity_Insert ist aktiviert mit Einfügen in Tabelle1 Wählen Sie * aus Tabelle2
- 7. MySql SELECT aus Tabelle1 wenn Spalte in Tabelle2 = 1
- 8. Einfügen von Daten aus Tabelle1 in Tabelle2 in SQL
- 9. Aktualisieren Sie Daten in Tabelle1, wo Duplikate in Tabelle2
- 10. Aktualisieren Sie Datensätze in Tabelle1 basierend auf Duplikaten in Tabelle2
- 11. Wie zu Tabelle2 beizutreten, wenn die Tabelle2 ID in Tabelle1 nicht null ist
- 12. Wie erhält man alle Spalten von Tabelle1 und alle Zeilen von Tabelle2, die zu Tabelle1 gehören?
- 13. Wählen Sie richtige Spalten aus JOIN-Anweisung
- 14. SQL Server Daten von Tabelle1 zu Tabelle2 einfügen wo Tabelle1 = Tabelle3 Daten
- 15. Wie importiert man die Tabellen Tabelle1, Tabelle2, Tabelle3?
- 16. SQL - Felder von Tabelle1 anzeigen, wenn Bedingung in Tabelle2 funktioniert
- 17. Verschieben Sie Zeilen von Tabelle1 nach Tabelle2 (Archiv) und halten Sie die Daten der letzten 7 Tage in Tabelle1.
- 18. SQL Server: Suchen Zeilen Zeilen in Tabelle1 nicht in Tabelle2, aber Daten aus Tabellen benötigen
- 19. sql - wie in Tabelle1 aus Tabelle2 einfügen, aber nicht den doppelten Wert einfügen
- 20. Fügen Sie Daten in Tabelle3 in Abhängigkeit von Übereinstimmungen in Tabelle1 und dissmatches in Tabelle2 ein.
- 21. Wie lösche Zeilen in Tabelle1, wo COUNT von WHERE in Tabelle2 größer als 0 ist?
- 22. Es gibt zwei Tabellen mit dem gleichen Typ von Datensätzen, die den nicht verwendeten Datensatz aus Tabelle2 in Tabelle1 finden
- 23. Wählen Sie * aus Wählen Sie
- 24. SQL Server: Rückgabewert in bestimmten Tabelle2 Spalte basierend auf Wert in Tabelle1
- 25. Wählen Sie aus mehreren Tabellen durch Spalte verbunden, wo Bedingung
- 26. Kopieren von Zellen aus sheet1 Tabelle2, wenn es in sheet2
- 27. Postgres, table1 Links Join Tabelle2 mit nur 1 Zeile pro ID in Tabelle1
- 28. Löschen aus Tabelle1 und Datensätze in Tabelle 2
- 29. EntityDataSource, Wählen Sie aus?
- 30. Wählen Sie einen Wert in der Dropdown-Liste aus zwei Datenbanktabellen
Warum machst du es nicht einfach um zu sehen, was es macht? Es wird ein 'kartesianisches Produkt' erzeugt, indem eine' Kreuzverbindung' verwendet wird ... – sgeddes
Danke @sgeddes, jetzt verstehe ich es. Entschuldigung für meine Dummheit. –