sql >> Database >  >> RDS >> Mysql

Hoe mysql JOIN te gebruiken zonder ON-voorwaarde?

MySQL documentatie behandelt dit onderwerp.

Hier is een samenvatting. Bij gebruik van join of inner join , de on voorwaarde is optioneel. Dit is anders dan de ANSI-standaard en verschilt van bijna elke andere database. Het effect is een cross join . Op dezelfde manier kunt u een on . gebruiken clausule met cross join , die ook verschilt van standaard SQL.

Een cross join creëert een Cartesiaans product -- dat wil zeggen, elke mogelijke combinatie van 1 rij uit de eerste tabel en 1 rij uit de tweede. De cross join voor een tabel met drie rijen ('a', 'b' en 'c') en een tabel met vier rijen (zeg 1, 2, 3, 4) zou 12 rijen hebben.

In de praktijk, als je een cross join wilt doen, gebruik dan cross join :

from A cross join B

is veel beter dan:

from A, B

en:

from A join B -- with no on clause

De on clausule is vereist voor een rechter of linker outer join, dus de discussie is niet relevant voor hen.

Als je de verschillende soorten joins wilt begrijpen, moet je wat studeren over relationele databases. Stackoverflow is geen geschikte plaats voor dat niveau van discussie.



  1. Hoe repareer ik een InnoDB-tabel?

  2. In PostgreSQL, hoe gegevens in te voegen met de opdracht COPY?

  3. MySQL-verschil tussen twee rijen van een SELECT-instructie

  4. PostgreSQL Checkpoint-statistieken meten