2011-12-20 2 views
0

하나의 쿼리 만 사용하는 ID가 가장 적은 테이블을 기반으로 테이블에서 ID를 가져 오려고합니다. 단 하나의 쿼리에서이를 수행 할 수 있습니까? 예를 들어MySQL이 가장 적은 수의 ID를 반환합니다.

: 그것은 단지 3 카운트가 ID 1 대 1 수를 가지고 있기 때문에

---------------------- 
| ID | Article_ID| 
---------------------- 
| 1 |  7 | 
---------------------- 
| 1 |  3 | 
---------------------- 
| 1 |  4 | 
---------------------- 
| 2 |  5 | 
---------------------- 

나는 그것이 ID "2"를 "2"를 반환 할 것입니다.

나는 모든 ID의 목록을 얻기 위해 쿼리를 실행 한 다음 각 ID 수를 얻고 마지막으로 비교하는 루프를 수행하여이 작업을 수행 할 수 있음을 알고 있지만 가능한 경우이를 알고 싶었습니다. 대신이 모든 것을 단일 쿼리에서 수행하십시오.

이 데이터를 가져 오는 나의 마음에 드는 방법은 자체 조인을 사용하는 것입니다

답변

1

다음 커서에서 첫 번째 행을 읽는다.

select id from (
    select id, count(id) as c 
    from <table name> group by id 
) as x order by c limit 1 
+0

마지막에 "limit 1"절을 추가하면 그것을 얻을 수 있습니다. – tato

+0

감사합니다. mysql 구문에 익숙하지 않습니다. 저는 주로 오라클과 협력합니다. –

+0

클라스는, 도움을 주셔서 감사합니다 - 나는 다음과 같은 시도했지만 오류가있어 : C 제한에 의해 순서 (ID 에 의해 authors_article 그룹에서 c를 선택 아이디, 수 (ID)) 1 오류에서 선택 아이디 : 모든 파생 테이블에 자체 별칭이 있어야합니다. –

0

은 (내가 그것을 테스트하지 않은, 뒤로 < 운영자가있을 수 있습니다.

SELECT t1.ID, t1.Article_ID 
FROM table t1 
    LEFT JOIN table t2 ON t1.id = t2.id AND t1.article_id < t2.article_id 
WHERE t2.id is null 

이는 경우, 쿼리에서 반환 될 것이다 그것은 정확히 질문에 대답하지 않더라도, 도움이

------------------- 
| ID | Article_ID | 
------------------- 
| 1 | 3   | 
------------------- 
| 2 | 5   | 
------------------- 
+0

그가 요구하는 것이 아닙니다. 가장 낮은 숫자가 1 인 경우에만 작동합니다. –

+0

귀하의 권리. 나는 그것을 조금 더 가까이 읽어야한다. 그렇게 간단한 질문 일 것이라고 생각하지 않았습니다. – xecaps12

관련 문제