mysql
  • select
  • group-by
  • 2009-07-25 9 views 0 likes 
    0

    현재 데이터베이스에서 일부 데이터를 선택하기 위해 PHP/MySQL을 사용하고 있습니다. 나의 현재 SELECT 문은 다음과 같습니다MySQL Select Statement - GROUP BY/UNICY

    하나의 "스레드 ID가"열이 선택되도록하여, 내가는 GROUP BY를 사용하고, 동일한 "스레드 ID를"이 일부 열이 있습니다
    mysql_query("SELECT * FROM tblpm WHERE receiver_id ='$usrID' GROUP BY 
    thread_id ORDER BY unique_id DESC") or die(mysql_error()); 
    

    . 그룹화와 함께 모든 것이 잘 작동하지만 가장 최근의 것이 아니라 첫 번째 '스레드 ID'열을 선택합니다. 예를 들어

    , 모두 같은 thread_id 4 열이 있습니다

    thread_id unique_id 
        222   1 
        222   2 
        222   3 
        222   4 
    

    나는 GROUP BY를 수행 할 때, 나는 고유 ID 4 (가장 최근에 생성 된 열)와 함께 하나를 검색하는 데 싶습니다 고유 ID 1 (생성 된 가장 오래된 열)이 아닙니다.

    내 SELECT 문으로이를 수행하는 방법에 대한 아이디어가 있습니까? 감사.

    +0

    귀하의 쿼리가 SQL 주입 취약점을 가질 수있다(). 회신에 대한 –

    +0

    감사 : $ 데이터 =는 mysql_query (" tblpm.thread_id, tblpm.receiver_id, tblpm.title, MAX (tblpm.content), tblpm.date_sent, tblpm을 선택합니다 : 여기 내가 현재 사용하고 무엇인가 .sender_id UNIQUE_ID로서 tblpm.read_pref, MAX (tblpm.id) FIRST_NAME AS tblusers.usrFirst, tblpm LEFT OUTER FROM LAST_NAME AS tblusers.usrLast는 tblpm.sender_id = tblusers.usrID WHERE receiver_id = ON에 tblUsers 가입 '$ usrID' GROUP BY thread_id ORDER BY unique_id DESC ") 또는 die (mysql_error()); –

    +0

    그러나 가장 최근의 "content"열을 표시하려고하면 가장 최근의 "content"필드가 표시됩니다. 보시다시피, 저는 MAX (tblpm.content)를 호출하려고하는데, 그 일을 끝내지 않는 것 같습니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까? –

    답변

    3
    SELECT thread_id, MAX(unique_id) 
    FROM tblpm 
    GROUP by thread_id 
    

    너무 :

    mysql_query(<<<END 
    SELECT thread_id, MAX(unique_id) 
    FROM tblpm 
    WHERE receiver_id ='$usrID' 
    GROUP by thread_id 
    END 
    ) or die(mysql_error()); 
    

    물론이 브라우저에서 오는 경우 USRID $ 탈출해야합니다. 당신이 당신의 쿼리를 매개 변수화 또는 mysqli_real_escape_string를 사용하지 않기 때문에

    0
    SELECT thread_id, max(unique_id) 
    FROM tblpm 
    WHERE receiver_id = '$usrID' 
    GROUP BY thread_id; 
    
    0
    SELECT DISTINCT thread_id, unique_id 
    FROM tblpm 
    WHERE receiver_id = '$usrID' 
    GROUP BY thread_id 
    ORDER BY unique_id DESC; 
    
    관련 문제