Mysql
 sql >> Baza danych >  >> RDS >> Mysql

DOŁĄCZENIE do MySQL czy UŻYWANIE?

Jest to głównie cukier składniowy, ale warto zauważyć kilka różnic:

WŁĄCZONE jest bardziej ogólny z tych dwóch. Można łączyć tabele na kolumnie, zestawie kolumn, a nawet warunku. Na przykład:

SELECT * FROM world.City JOIN world.Country ON (City.CountryCode = Country.Code) WHERE ...

UŻYWANIE jest przydatne, gdy obie tabele mają wspólną kolumnę o dokładnie takiej samej nazwie, w której się łączą. W takim przypadku można powiedzieć:

SELECT ... FROM film JOIN film_actor USING (film_id) WHERE ...

Dodatkową miłą gratką jest to, że nie trzeba w pełni określać łączących się kolumn:

SELECT film.title, film_id -- film_id is not prefixed
FROM film
JOIN film_actor USING (film_id)
WHERE ...

Aby to zilustrować, wykonaj powyższe z ON , musielibyśmy napisać:

SELECT film.title, film.film_id -- film.film_id is required here
FROM film
JOIN film_actor ON (film.film_id = film_actor.film_id)
WHERE ...

Zwróć uwagę na film.film_id kwalifikacja w SELECT klauzula. Błędem byłoby po prostu powiedzieć film_id ponieważ spowodowałoby to niejednoznaczność:

BŁĄD 1052 (23000):Kolumna „film_id” na liście pól jest niejednoznaczna

Jeśli chodzi o select * , kolumna łącząca pojawia się w zestawie wyników dwukrotnie z ON podczas gdy pojawia się tylko raz z USING :

mysql> create table t(i int);insert t select 1;create table t2 select*from t;
Query OK, 0 rows affected (0.11 sec)

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.19 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select*from t join t2 on t.i=t2.i;
+------+------+
| i    | i    |
+------+------+
|    1 |    1 |
+------+------+
1 row in set (0.00 sec)

mysql> select*from t join t2 using(i);
+------+
| i    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego wiersze zwracane przez wyjaśnienie nie są równe count()?

  2. Różnica między schematem / bazą danych w MySQL

  3. Jak usunąć wiodące i końcowe znaki w MySQL?

  4. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL - Część 6

  5. Jak połączyć wiele wierszy w jedną kolumnę w MySQL?