2014-10-08 2 views
0

나는 다음과 같은 쿼리를 가지고SQL 쿼리의 필드가 고유한지 확인하는 방법은 무엇입니까?

SELECT nature_images.image_code, 
      nature_objects.name 
    FROM nature_images 
    LEFT JOIN nature_objects 
     ON nature_images.object_id = nature_objects.id 
     AND nature_images.approved = 1 
    ORDER BY RAND() 
    LIMIT 0,5 
결과는하지만 서로 다른 nature_objects.id와 반복 nature_object.ids을 반환

는 제가 기본적으로 필요한 것은 nature_object.id 반환 모든 행에 고유해야하고하지 않습니다 되풀이했다. SELECT DISTINCT를 사용해 보았지만 실패 할 것 같습니다. 어쨌든 그렇게 할 수 있습니까?

+1

정확히 어떻게이 '객체 2'를 생산하고 있습니까? 그건 당신이 db 안에 어떻게 든 정확한 텍스트를 저장하지 않는다면 mysql이 뱉어내는 것이 아닙니다. –

+0

@MarcB 아니요, 그런 식으로 저장하지 않거나 SQL에서 결과를 반환한다는 것입니다.이 쿼리는 원치 않는 동일한 개체에 대해 서로 다른 두 개의 자연 이미지를 반환 할 수 있습니다. . – Ali

+0

그룹을 사용하여 최대 코드를 가져옵니다. – radar

답변

2

개체 이름에 GROUP BY을 사용하고 최대 코드 또는 최소 코드를 얻을 수 있습니다.

SELECT MAX(nature_images.image_code), 
     nature_objects.name 
FROM nature_images 
LEFT JOIN nature_objects 
    ON nature_images.object_id = nature_objects.id 
    AND nature_images.approved = 1 
GROUP BY nature_objects.name 
ORDER BY RAND() 
LIMIT 0,5 
관련 문제