2011-10-14 2 views
1

최대 포인트가있는 테이블에서 n 사용자를 확보해야합니다.mySQL - 최대 포인트가있는 테이블의 사용자 만 얻으십시오.

id name points 
1  pep  4 
2  roky 5 
3  jhon 2 
4  sant 5 

쿼리 결과는 및 '산트''ROKY'일 것이다.

내가 사용했던이

SELECT name FROM table 
WHERE points = (SELECT MAX(points) FROM table) 

같은 하위 쿼리는 단지 하나의 쿼리와 함께 할 수 있는가 (NO 서브 쿼리없이 조인)?

+0

하위 쿼리가없는 이유는 무엇입니까? 왜 조인하지 않습니까? 이것은 이론적 인 질문입니까? –

+0

가능한지 알고 싶으면 다른 테스트를 통해 가장 효율적인지 알고 싶습니다. – aaronroman

+0

'(포인트) '에 인덱스가 있다면 가능한 한 효율적입니다. 아니요, 하위 쿼리 또는 조인 없이는 가능하지 않습니다. –

답변

-1

행별로 결과를 정렬하고 첫 번째 결과를 얻습니다.

SELEC name FROM table 
ORDER BY points DESC 
LIMIT 1 
+0

그 질문에 대한 답변이 아닙니다. 결과는이 예제에서 2 행이어야하지만 어떤 정수도 될 수 있습니다 –

+0

실제로 질문을 읽지 못했습니다. – mb14

1

당신은 꽤 바른 길입니다. 그것은 일종의 하위 쿼리가 필요합니다.

here에서 MySQL 매뉴얼이 어떻게 수행되는지 확인하십시오.

0

이것이 작동하는지 정말로 확신 할 수 없습니다. 표에서 최대 점수를 선택한 다음 점수 점수를 사용하여 점수에 참여하십시오. 하위 쿼리없이 필요한 이름을 잠재적으로 표시 할 수 있습니다. 물론 하위 쿼리가 더 나은 (그리고 더 빠른) 대답입니다.

SELECT max(t1.points) as maxpoints, t2.name FROM table t1 
INNER JOIN table t2 on t2.points = maxpoints 

편집 : 잠깐 뭐라 구요? 조인하지 않습니까? 언제부터이 작업의 일부였습니까? 좋아, 내 솔루션은 그것을 쓰는 동안 구식이었다. 오 잘.

+0

감사합니다. 어쨌든 고맙겠습니다 :) 우리가 조인을 사용하지 않으면 가능하지 않다고 생각합니다. 하위 쿼리 – aaronroman

관련 문제