Czy jest możliwe wpisanie zapytania join bez instrukcji ON
? i w jaki sposób te połączenia różnią się LEFT JOIN, RIGHT JOIN
działa.Jak używać mysql JOIN bez warunku WŁĄCZENIA?
Odpowiedz
MySQL documentation dotyczy tego tematu.
Oto streszczenie. Podczas korzystania z join
lub inner join
, warunek on
jest opcjonalny. Różni się od standardu ANSI i różni się od prawie każdej innej bazy danych. Efektem jest cross join
. Podobnie można użyć klauzuli on
z cross join
, która również różni się od standardowego SQL.
Łączenie krzyżowe tworzy produkt kartezjański - czyli każdą możliwą kombinację 1 wiersza z pierwszej tabeli i 1 wiersza z drugiej. Łączenie krzyżowe dla tabeli z trzema rzędami ("a", "b" i "c") oraz tabela z czterema wierszami (np. 1, 2, 3, 4) miałaby 12 wierszy.
W praktyce, jeśli chcesz zrobić krzyż dołączyć, a następnie użyć cross join
:
from A cross join B
jest znacznie lepsza niż:
from A, B
oraz:
from A join B -- with no on clause
on
w przypadku prawych lub lewych połączeń zewnętrznych wymagana jest klauzula, więc dyskusja nie jest istotna dla nich.
Jeśli chcesz zrozumieć różne rodzaje połączeń, musisz przeprowadzić pewne badania na relacyjnych bazach danych. Stackoverflow nie jest odpowiednim miejscem dla tego poziomu dyskusji.
zobaczyć jakiś przykład w http://www.sitepoint.com/understanding-sql-joins-mysql-database/
można wykorzystać „za pomocą” zamiast „ON” jak w zapytaniu
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Aby uzyskać dodatkowe wyjaśnienie, kolumna łączenia w obu tabelach musi być identycznie nazwana dla USING do pracy – rmirabelle
kupili także zbadanie wykorzystania unijnego, który łączy wiele tabel dla jednego wyjścia: SQL - Combine two tables for one output
Jak to jest nawet istotne dla pytania OP? –
- 1. Kiedy używać LEFT JOIN i kiedy używać INNER JOIN?
- 2. Warunkowe JOIN w MySQL
- 3. Rejestracja MySQL Inner Join
- 4. MySQL INNER JOIN Alias
- 5. Left Join w Mysql?
- 6. Aktualizacja MySQL przy użyciu warunku IF
- 7. Nie można określić, co klauzula WHERE powinna używać JOIN MYSQL
- 8. MySQL LEFT JOIN 3 tabele
- 9. Dodawanie wielu warunków do MySQL Inner Join
- 10. MySql Inner Join z WHERE
- 11. Jak zrobić "odrębny" join z MySQL
- 12. MySQL INNER JOIN - '=' vs 'like'
- 13. MySQL LEFT JOIN Wiele warunków
- 14. Jak używać interfejsu API JPA w JOIN
- 15. Wybierz JOIN MySQL 3 Tabele
- 16. MySQL OUTER JOIN Błąd składniowy
- 17. Czy można używać podkwerendy w warunku dołączania w programie Access?
- 18. Kiedy należy używać INNER -LOOP- JOIN zamiast INNER JOIN
- 19. mysql left join z wieloma kolumnami
- 20. Dlaczego używać JOIN zamiast wewnętrznych zapytań
- 21. Jak używać warunku if/else w widoku XML sapUI?
- 22. Jak używać warunku z wieloma wartościami w serwerze sql 2005?
- 23. Jak używać zawartości stosu w warunku punktu przerwania LLDB?
- 24. LEFT OUTER JOIN vs SUBSELECT w MySQL
- 25. Jak używać Coalesce w MySQL
- 26. Jak używać zmiennych użytkownika w klauzuli MySQL LIKE?
- 27. Mysql używać DESC w przypadku oświadczenie
- 28. Jak używać JOIN w Yii2 Active Record dla modelu relacyjnego?
- 29. Jak używać ejs bez ekspresu
- 30. jak używać UITableView bez UITableViewController
Ponieważ klauzula "ON" informuje serwer o tym, jak tabele są powiązane, nie. Jeśli twoje różne typy łączeń dają taki sam rezultat, to robisz to źle, a dodanie kodu może pomóc nam dostrzec twój problem. W międzyczasie udaj się na blog [Jeffa Atwooda] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) na 2-minutowe wprowadzenie do różne rodzaje złączeń. – fvu