Mysql
 sql >> база данни >  >> RDS >> Mysql

Присъединяване към MySQL срещу ИЗПОЛЗВАНЕ?

Това е предимно синтактична захар, но няколко разлики заслужават внимание:

ВКЛ. е по-общото от двете. Човек може да свързва таблици ВЪРХУ колона, набор от колони и дори условие. Например:

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

ИЗПОЛЗВАНЕ е полезно, когато и двете таблици споделят колона с точно същото име, към която се присъединяват. В този случай може да се каже:

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

Допълнително приятно удоволствие е, че не е необходимо да се квалифицират напълно присъединяващите се колони:

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

За илюстрация, за да направите горното сON , ще трябва да напишем:

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 ...

Обърнете внимание на film.film_id квалификация в SELECT клауза. Би било невалидно просто да се каже film_id тъй като това би довело до неяснота:

ГРЕШКА 1052 (23000):Колона „film_id“ в списъка с полета е двусмислена

Що се отнася до select * , колоната за присъединяване се появява в резултатния набор два пъти с ON докато се появява само веднъж с 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. Урок за MySQL – Конфигуриране и управление на SSL на вашия MySQL сървър

  2. Как да коригирам често срещани проблеми с MySQL база данни?

  3. Как да получа текущата часова зона на MySQL?

  4. Най-добрият тип данни за съхраняване на валутни стойности в MySQL база данни

  5. Мога ли да обединя множество MySQL редове в едно поле?