2012-02-29 11 views
0

もし私がUSING (nid,sid)を削除すると、その列があいまいなエラーになります。 USINGはここで何を理解していますか?それは外側のselectクエリでsid、nidとsidがサブクエリからnidに返されましたか?MySQLのUSING構文がわからない

SELECT sid, nid, max_rating FROM outcomes 
JOIN (SELECT nid, sid, MAX(rating) AS max_rating from outcomes group by nid, sid) AS newtable 
USING (nid, sid) 
WHERE rating = max_rating AND name LIKE '%test%' 

答えて

3

はい、USINGnidsidの両方を使用して2つのテーブルを結合するために使用されています。しかしそれには利点があります。 USING文が一緒に列をマージするよう

  • まず、あなたの結果は、nidsidために重複する列を持っていません。
  • WHERE句にnidまたはsidを使用する場合は、その列に使用するテーブルを指定する必要はありません。sid > 10などを直接使用できます。
+0

これはPostgreSQLとMySQLでのみサポートされていることに注意してください。 – Subodh

2

USING(column_list)句は、両方のテーブルに存在する必要がある列のリストを指定します。列C1、C2、およびC3を含む両方のテーブルBとした場合、参加次の2つの表からの対応する列を比較:

a LEFT JOIN b USING (c1,c2,c3) 

は、上記のMySQLのドキュメントから取られます。私はこれが役に立つと願っています。

+0

リンクはhttp://dev.mysql.com/doc/refman/5.0/ja/join.htmlにあります。 –

関連する問題