2012-02-29 2 views
0

USING (nid,sid)을 제거하면 열이 모호합니다. 나는 USING가 여기에서하는 것을 꽤 이해하지 못합니까? 그것은 nid와 sid가 하위 쿼리에서 nid로 돌아 왔으며, outer select 쿼리의 sid입니까?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를 모두 사용하여 두 개의 테이블을 조인하는 데 사용되는. 그러나 이점이 추가되었습니다. USING 문을 함께 열을 병합으로

  • 먼저

    , 당신의 결과는 nidsid 중복 된 열이 없습니다. 당신이 당신의 WHERE 절에 nid 또는 sid을 사용하고자하는 경우
  • 둘째, 당신은 직접 sid > 10 같은 것을 사용할 수, 해당 컬럼에 사용할 테이블을 지정할 필요가 없습니다 것입니다.
+0

그리고이 기능은 PostgreSQL과 MySQL에서만 지원됩니다. – Subodh

2

USING (column_list) 절은 두 테이블에 모두 있어야하는 열 목록의 이름을 지정합니다. 열 C1, C2, 및 C3를 포함하는 두 테이블 A B 및 경우 조인 다음 두 테이블에서 해당 항목을 비교 한

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

은 상기의 MySQL 문서로부터 취해진 다. 이것이 도움이되기를 바랍니다.

+0

링크는 http://dev.mysql.com/doc/refman/5.0/en/join.html에 있습니다. –

관련 문제