SORU
6 Temmuz 2012, Cuma


Vs KULLANARAK MySQL?

Bir MySQL ON USING() arasındaki fark nedir JOIN,? Söyleyebileceğim kadarıyla, USING() sadece daha uygun bir sözdizimi. ON sütun adları aynı olduğu zaman biraz daha fazla esneklik sağlar. Fark çok küçük olduğundan, ancak, sadece uzakta USING() ile yapıyorlar sanırsın.

Görünenden fazlası var mı? Evet, belli bir durumda kullanılır?

CEVAP
6 Temmuz 2012, Cuma


Çoğunlukla sözdizimsel şeker, ama bir kaç farklılıklar dikkat çekicidir:

fazla iki genel. Bir sütun, sütun bir dizi ve bir durum ve hatta tabloları birleştirme. Örneğin:

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

KULLANARAKher iki tablo üzerinde katılmak tam olarak aynı ada sahip bir sütun paylaşmak yararlıdır. Bu durumda, bir diyebilirsiniz:

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

Ek güzel bir tedavi tam olarak katılan sütunlar hak kazanmak için gerekmez:

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

Göstermek için, yukarıdaki yapacakistiyoruz ki yazmak zorunda:

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

SELECT fıkra film.film_id yeterlilik dikkat edin. Sadece bir belirsizlik için yapar bu yana: film_id söylemek geçersiz olur

HATA 1052 (23000): Sütun 'film_id' alan listesinde belirsiz

Olarak içinselect *katılmadan sütun yalnızca bir kez USING ile görüntülenirken: sonuç iki kez ON ile görünür

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>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • placeboing

    placeboing

    7 Mart 2006
  • Sorikan

    Sorikan

    3 ŞUBAT 2008
  • TokShogun

    TokShogun

    6 HAZİRAN 2009