Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kartesisches Produkt in SQL verstehen

Ein kartesischer Join verbindet jeden Datensatz in der ersten Tabelle mit jedem Datensatz in der zweiten Tabelle. Da Ihre Tabelle also 7 Zeilen hat und mit sich selbst verknüpft ist, sollte sie 49 Datensätze zurückgeben, wenn Sie kein where gehabt hätten Klausel. Ihre where-Klausel erlaubt nur Datensätze mit a Das Guthaben von ist kleiner als b s Gleichgewicht. Seit 900 ist, wie Sie sagten, das maximale Guthaben in der Tabelle, es wird niemals kleiner sein als jedes andere Guthaben und wird daher niemals zurückgegeben.

Bezüglich der ersten fünf Zeilen gelten auch für Joins die normalen Regeln von SQL. Da SQL-Tabellen keine intrinsische Reihenfolge haben, ist es völlig Sache der Datenbank, zu entscheiden, wie sie zurückgegeben werden, es sei denn, Sie geben explizit eine Reihenfolge in order by an Klausel. Die von Ihnen aufgelisteten Werte sind absolut gültige Werte, die Sie von der Abfrage erwarten würden.