Mysql
 sql >> Database >  >> RDS >> Mysql

Comprensione del prodotto cartesiano in SQL

Un join cartesiano unisce ogni record nella prima tabella con ogni record nella seconda tabella, quindi poiché la tua tabella ha 7 righe ed è unita a se stessa, dovrebbe restituire 49 record se non avessi un where clausola. La tua clausola where consente solo record in cui a il saldo di 'è inferiore a b l'equilibrio. Da 900 è, come hai detto, il saldo massimo nella tabella, non sarà mai più piccolo di qualsiasi altro saldo, e quindi non verrà mai restituito.

Per quanto riguarda le prime cinque righe, le normali regole di SQL si applicano anche ai join. Poiché le tabelle SQL non hanno un ordine intrinseco, spetta completamente al database decidere come restituirle, a meno che tu non specifichi esplicitamente un ordine in order by clausola. I valori che hai elencato sono valori perfettamente validi che ti aspetteresti che la query restituisse.