2012-02-29 36 views
0

如果我刪除USING (nid,sid),我得到的列是ambigious錯誤。我不太明白USING在這裏做什麼?它是否加入了nid和sid從子查詢返回到nid,sid在外部select查詢中?不明白在MySQL中使用語法

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

是,USING被用來連接同時使用nidsid兩個表。但它增加了優勢。

  • 首先,你的結果不會有重複的列nidsid,爲USING聲明合併列在一起。第二,如果您想在WHERE子句中使用nidsid,則不需要指定要爲該列使用哪個表,您可以直接使用類似sid > 10之類的內容。
+0

請注意,這僅在PostgreSQL和MySQL中受支持。 – Subodh 2012-02-29 12:32:29

2

USING(column_list)子句命名兩個表中必須存在的列的列表。如果表A和B都包含列C1,C2和C3,以下加入來自這兩個表進行比較相應的列:

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

以上是從MySQL的文檔獲取的。我希望這是有幫助的。

+0

鏈接位於:http://dev.mysql.com/doc/refman/5.0/en/join.html – 2012-02-29 12:35:03