sql >> Databáze >  >> RDS >> Mysql

Pochopení kartézského součinu v SQL

Kartézské spojení spojuje každý záznam v první tabulce s každým záznamem ve druhé tabulce, takže protože vaše tabulka má 7 řádků a je spojena sama se sebou, měla by vrátit 49 záznamů, pokud jste neměli where doložka. Vaše klauzule where povoluje pouze záznamy, kde je a 's zůstatek je menší než b rovnováha. Od 900 je, jak jste řekl, maximální zůstatek v tabulce, nikdy nebude menší než jakýkoli jiný zůstatek, a proto nebude nikdy vrácen.

S ohledem na prvních pět řádků platí normální pravidla SQL i pro spojení. Protože tabulky SQL nemají žádné vnitřní pořadí, je zcela na databázi, aby se rozhodla, jak je vrátí, pokud výslovně neuvedete pořadí v order by doložka. Hodnoty, které jste uvedli, jsou dokonale platné hodnoty, které byste očekávali, že dotaz vrátí.



  1. Změňte datový typ sloupce na sériový

  2. Mohu provést výběr, aktualizaci a odstranění mysql v jednom dotazu?

  3. Ve výběrovém dotazu na sqlfiddle (oracle) nelze použít názvy sloupců

  4. Externí tabulky Oracle