2013-08-15 2 views
0

이 질문에 대한 적절한 대답을 찾을 수 없습니다. 나는 (메모라고 불리는) 테이블에서 결정된 열 (인기라고 불리는)에서 최대 값을 가진 행을 선택하기 위해 mysql에서 쿼리를 작성하는 매우 간단한 코드를 가지고있다. 모든 행라는 이름의 열이 여기 mysqli에서 MAX() 함수를 사용할 수 없습니까?

을 comment_id 코드입니다 있습니다

$의 connect_error = '죄송합니다, 연결 오류가 발생했습니다 다시 시도';

$con = mysqli_connect('localhost','user_name','password') or die($connect_error); 

mysqli_select_db($con, 'database') or die($connect_error); 

$result = mysqli_query($con, "SELECT MAX(`popularity`) FROM `comments`"); 

    while ($row = mysqli_fetch_assoc($result)) { 
     $most_popular = $row['comment_id'];    
      } 

    echo "most popular is: $most_popular"; 

     mysqli_free_result($result); 

     mysqli_close($con); 

화면에 올바른 결과가 표시되지 않습니다. 누군가이 점에 대해 조언을 해줄 수 있습니까?

당신은 comment_id 필드를 표시하기 위해 찾고있는

+1

'인기도'열은 숫자 값입니까? – OrganizedChaos

+0

1) 어떤 결과가 있습니까? 2) 작은 따옴표로 묶어서는 안됩니까? '인기'보다는 '인기' 3) 쿼리 문 다음에 'echo $ con-> error'를 수행하여 오류가 있는지 확인하십시오. – JRizz

답변

1

MAX(popularity)을 지정됩니다 때 comment_id라는 칼럼에서 결과를 읽으려는

2

주셔서 감사합니다,하지만 당신은 SELECT 쿼리에 해당이 없습니다. 최대 popularity 값만 선택하면됩니다.

귀하의 질의에 대해이 작업을 시도 :이 인기로 의견을 정렬 한 다음 바로 위에 하나를 따기입니다

SELECT comment_id FROM comments ORDER BY popularity DESC LIMIT 1 

.

물론이 열에 다른 값을 표시하려면 더 많은 열을 선택하거나 SELECT *을 쉽게 변경할 수 있습니다. 쿼리의 결과가이 쿼리를 사용하여 최대 '인기'열이있는 행을 선택하려면

+0

SELECT *는 모든 성능 문제의 근원입니다. –

+1

@RaymondN 그게 내 기본 대답으로하지 않았다. 그러나 정말로, downvote ?? – jszobody

+0

두 개의 화면에 stackoverflow가 발생하면서 우연히 투표가 내려 갔을 때 실수로 투표를 아래로 밀었습니다 ... 투표를 다시 한 번 시도하고 투표 한 응답이 없기 때문에이 경우 올바른 것이어야합니다. –

0

;

$result = mysqli_query($con, "SELECT * FROM `comments` ORDER BY `popularity` DESC LIMIT 1"); 

이 경우 당신은 당신이 관련된 어레이의 열을 올바른 이름을 줄 것이다

SELECT MAX(`popularity`) AS comment_id FROM `comments` 

이 필요 인기별로 정렬 모두가 LIMIT 1 ...

0

를 제거합니다.

관련 문제