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

Rozdíl mezi těmito dvěma přístupy ke spojovací tabulce?

Kromě syntaxe pro malý úryvek fungují úplně stejně. Ale pokud je to možné, vždy pište nové dotazy pomocí ANSI-JOINů.

Pokud jde o sémantiku, čárková notace se používá k vytvoření KARTÉZSKÉHO součinu mezi dvěma tabulkami, což znamená vytvoření matice všech záznamů z tabulky A se všemi záznamy z tabulky B, takže dvě tabulky se 4 a 6 záznamy vygenerují 24 záznamů. Pomocí klauzule WHERE pak můžete vybrat řádky, které skutečně chcete z tohoto kartézského součinu. MySQL však tuto obrovskou matici ve skutečnosti nesleduje a nevytváří, ale sémanticky to znamená toto.

Syntaxe JOIN je standard ANSI, který jasněji definuje, jak tabulky interagují. Zapnutím ON klauzule vedle JOIN , je jasné, co spojuje obě tabulky dohromady.

Funkčně provedou totéž pro vaše dva dotazy. Rozdíl nastane, když začnete používat jiné [OUTER] Typy JOIN.

Konkrétně pro MySQL má zápis čárkou jeden rozdíl

STRAIGHT_JOIN je podobný JOIN, kromě toho, že levá tabulka je vždy čtena před pravou tabulkou. To lze použít v těch (několika) případech, kdy optimalizátor spojení umístí tabulky do nesprávného pořadí.

Nicméně by to nebylo moudré spolehněte se na tento rozdíl.



  1. Filtrování Django JSONField

  2. Mohu získat názvy všech tabulek databáze SQL Server v aplikaci C#?

  3. zvýšit číslo řádku, když se změní hodnota pole v Oracle

  4. mysqli_stmt::bind_result():Počet proměnných vazby neodpovídá počtu polí v připraveném příkazu