반응형
두 개의 테이블이 있습니다. 가장 왼쪽 테이블의 각 레코드에 대해 오른쪽 테이블의 하나의 레코드 만 반환되는 방식으로 이들을 조인하고 싶습니다. 아래에 예를 포함했습니다. 실제 데이터가 약 4M 행이므로 하위 쿼리 및 임시 테이블을 피하고 싶습니다. 또한 하나 또는 아무것도 일치하지 않는 한 맨 오른쪽 테이블의 어떤 레코드가 일치하는지 상관하지 않습니다. 감사!
테이블 사용자 :
-------------
| 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 |
---------------------
해결 방법
사용하다:
SELECT u.id,
u.name,
MIN(t.spent) AS spent
FROM USERS u
JOIN TRANSACTIONS t ON t.uid = u.id
GROUP BY u.id, u.name
이렇게하면 TRANSACTIONS 레코드가 하나 이상있는 사용자 만 반환됩니다. 지원 기록이없는 사용자와 지원 기록이없는 사용자를 보려면 다음을 사용하십시오.
SELECT u.id,
u.name,
COALESCE(MIN(t.spent), 0) AS spent
FROM USERS u
LEFT JOIN TRANSACTIONS t ON t.uid = u.id
GROUP BY u.id, u.name
참조 페이지 https://stackoverflow.com/questions/3313614
반응형
'MySql' 카테고리의 다른 글
MySQL Is there a performance difference between BETWEEN and IN with MySQL or in SQL in general? (0) | 2020.11.16 |
---|---|
MySQL 워크 벤치를 사용하여 테이블의 열 이름을 변경 (업데이트)하는 방법은 무엇입니까? (0) | 2020.11.16 |
MySQL 두 암호가 일치하는지 확인하는 등록 양식 (0) | 2020.11.16 |
MySQL 최대 절전 모드 Java Long에서 MySQL BIGINT 오류로 매핑 (0) | 2020.11.16 |
MySQL SQL 오류 errno : 121 (0) | 2020.11.15 |
댓글