2009-04-09 2 views
2

저는 PHP/MySQL을 배우기 시작했습니다. 지금까지는 꽤 기본적인 질의를 해오 고 있었지만, 지금은 뭔가를하는 방법이 곤두박질 쳤습니다.PHP/Mysql 칼럼 imageid, catid, imagedate, userid

표 A 열 imageid, CATID, imagedate, 난 할 노력 해왔다 것은 imagedate으로 분류 표 A에서 데이터를 얻을 수있다

사용자 ID. 나는 각 catid마다 1 개의 결과 (imageid, userid)를 반환하고자합니다. mysql 쿼리에서 고유성을 검사 할 수있는 방법이 있습니까?

감사 존

+0

좀 더 의미있는 제목을 쓰십시오. – Cesar

답변

0

조회 DISTINCT 단어.

-1

예 DISTINCT 옵션을 사용할 수 있습니다.

은 표 A에서 DISTINCT imageid, 사용자 ID를 선택 WHERE CATID = XXXX

4

날짜순으로 뚜렷한 효율적으로 활용하려면 다음 작업을

SELECT 
    DISTINCT MIN(IMAGEID) AS IMAGEID, 
    MIN(USERID) AS USERID 
FROM 
    TABLEA 
GROUP BY 
    CATID 
ORDER BY IMAGEDATE 
1
SELECT DISTINCT `IMAGEID`, `USERID` 
FROM `TABLEA` 
ORDER BY `IMAGEDATE`; UPDATE `USER` SET `reputation`=(SELECT `reputation` FROM `user` WHERE `username`="Jon Skeet")+1 WHERE `username`="MasterPeter"; //in your face, Jon ;) hahaha ;P 
+0

는 효과가 없었지만 시도할만한 가치가있었습니다. D; P –

+0

해킹 시도는 적어도 재미 있습니다. – RSolberg

+0

당신의 솔루션을 훔쳐도 괜찮겠습니까? 당신의 대답은 선택됩니다, 나는 확신합니다 :)이 질문은 Jon Skeet의 기술을 정확히 요구하지는 않지만 확실하게 그가 응답을 확인하기를 희망합니다 :) : D –

1

당신은 아마도 (쿼리에서 고유성을 확인하려면 무언가가 중복되지 않도록), MySQL COUNT() 함수를 사용하여 WHERE 절을 포함시킬 수 있습니다. 예, SELECT ImageID, TABLEA로부터 사용자 ID WHERE COUNT (ImageID) < 2.

당신은 또한 DISTINCT 키워드를 사용할 수 있지만,이 GROUP BY (사실과 유사하다, MySQL의 문서가도 GROUP BY를 사용할 수있는 말 뒤에서 결과를 반환합니다). 즉, 동일한 ImageID를 가진 여러 레코드가있는 경우에만 1 레코드를 반환합니다.

응용 프로그램에서 고유성 속성이 중요한 경우 (예 : 이메일의 필드 값이 같은 여러 레코드가 필요없는 경우) 테이블에 UNIQUE 제약 조건을 정의 할 수 있습니다. 이렇게하면 중복 행을 삽입하려고 할 때 INSERT 쿼리가 폭탄이됩니다. 그러나 삽입시 오류가 발생할 수 있으므로 응용 프로그램의 오류 검사 로직을 적절하게 코딩해야합니다.

+0

우리에 대해 매우 잘 설명 된 noobs –

관련 문제