MySQL でテーブルを結合する場合、ON キーワードまたは USING キーワードのいずれかを使用するオプションがあります。一見すると、USING は ON に比べて便利な構文のように見えるかもしれません。ただし、各キーワードを特定のシナリオに適したものにする微妙な違いがあります。
ON では、次のようなさまざまな条件でテーブルを結合できるため、柔軟性が高まります。
たとえば、2 つの列間の比較、または式に基づいてテーブルを結合できます。
SELECT * FROM world.City JOIN world.Country ON (City.CountryCode = Country.Code) WHERE ...
USING は、同じ名前の列で完全一致を共有するテーブルを結合するために特別に設計されています。 ON 句を使用する代わりに共通の列名を指定できるため、構文が簡素化されます。
SELECT ... FROM film JOIN film_actor USING (film_id) WHERE ...
USING の大きな利点の 1 つは、SELECT 句で結合する列を完全修飾する必要がなくなることです。 :
SELECT film.title, film_id -- No prefix for film_id required FROM film JOIN film_actor USING (film_id) WHERE ...
2 つのキーワードの違いを説明するには、次のようにします。次の例を考えてみましょう:
ON を使用した例:
SELECT film.title, film.film_id -- Prefixing film.film_id required FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) WHERE ...
この例では、結合される列がまったく同じではないため、ON が使用されます (フィルム.film_id と film_actor.film_id)。曖昧さを避けるために、SELECT 句に film.film_id を付ける必要があります。
USING を使用した例:
SELECT * FROM t JOIN t2 USING (i);
この例では、結合列であるため USING が使用されます。 (i) は両方のテーブルで同一であり、同じ名前を持ちます。これにより構文が簡略化され、結果セットに共通列が一度自動的に組み込まれます。
USING はより便利な構文のように見えるかもしれませんが、ON は結合条件に関して柔軟性が高く、次のことを可能にします。より複雑なクエリの場合。名前が異なる列を比較する場合や複雑な条件を適用する場合は、ON を選択します。同じ列名を持つテーブルを結合する場合、特に結合列が結果セットの一部である場合は、USING を使用します。
以上がMySQL JOIN: ON と USING をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。