두 테이블이 있습니다. 왼쪽 테이블의 각 레코드에 대해 오른쪽 테이블의 레코드 하나만 반환되는 방식으로이 레코드를 조인하고 싶습니다. 아래 예를 포함 시켰습니다. 실제 데이터는 약 4M 행이므로 서브 쿼리와 임시 테이블을 피하고 싶습니다. 또한 가장 오른쪽 테이블의 어떤 레코드가 일치하는지 상관하지 않습니다. 감사!MySQL JOIN 쿼리 도움말 : 가장 왼쪽 테이블의 모든 행에 대해 가장 오른쪽 테이블에서 한 행만 반환하십시오.
테이블 사용자 :
-------------
| id | name |
-------------
| 1 | mike |
| 2 | john |
| 3 | bill |
-------------
테이블 거래 :
---------------
| uid | spent |
---------------
| 1 | 5.00 |
| 1 | 5.00 |
| 2 | 5.00 |
| 3 | 5.00 |
| 3 | 10.00 |
---------------
예상 출력 :
---------------------
| id | name | spent |
---------------------
| 1 | mike | 5.00 |
| 2 | john | 5.00 |
| 3 | bill | 5.00 |
---------------------
모두가 user.id (기본 키) 및 user.name별로 그룹화되는 이유는 무엇입니까? 기본 키별로 그룹화 한 후에는 다른 것을 필요로하지 않습니다. 나는 무언가를 놓치고 있습니까, 아니면 우리 모두가 단지 조랑말을 복사하고 있습니까? – TheJacobTaylor
@TheJacobTaylor : 표준 SQL에서는 GROUP BY에 집계로 래핑되지 않은 열을 포함해야합니다. ANSI 표준은 불필요한 하위 그룹화가 관련된 경우 모든 열을 정의하지 않는 기능을 지원합니다. MySQL은이를 지원하지만 대부분의 다른 데이터베이스에서는 작동하지 않습니다. –
@TheJacobTaylor : MySQL에는 모든 그룹화 열이 필요하지 않습니다. 거의 모든 다른 DBMS가 SQL 표준을 따르고 있습니다. –