2013-07-10 2 views
0

id, mls_id, address, agent_id와 같은 구조로 테이블을 검색하려고합니다. 내가하고 싶은 것은 agent_id에 대한 모든 레코드를 가져 오지 만 동일한 mls가 있으면 둘 이상을 가져 오지는 않습니다. 예 :중복 레코드를 제외하는 mysql 검색 수행 방법

Select * From table WHERE agent_ID = 1234 

은 5 개의 레코드를 가져올 수 있지만 두 개의 레코드가 동일한 mls_id를 가지고 있다고 가정 해 봅시다. 그 중 하나를 끌어와 여전히 다른 모든 결과를 유지하는 방법이 있습니까?

답변

1

이 트릭을 할 것 같다 :

가 여기에 같은 mls_id

SELECT id, mls_id, address, agent_id 
FROM MyTable t1 
WHERE t1.agent_id=1 AND t1.id = 
    (SELECT Min(t2.id) 
    FROM MyTable t2 
    WHERE agent_id=1 AND t2.mls_id=t1.mls_id 
    GROUP BY t2.mls_id) 

이 그들로부터 최소 ID로 레코드를 선택하는 바이올린 예입니다 기능 : SqlFiddle

+0

와우 - 그거야. 이전에 작성한 것보다 훨씬 복잡한 mysql 문. 감사! –

0
SELECT DISTINCT * 
FROM table 
WHERE agent_ID = 1234 

DISTINCT 키워드를 사용하면 결과 집합의 중복 레코드가 삭제됩니다.

+0

저도 같은 결과를 얻었습니다. 나는 여전히 동일한 mls_id 필드를 가진 세 개의 레코드를 얻고 있습니다. 그냥하면 SELECT DISTINCT mls_id FROM table WHERE agent_ID = 1234 그러면 나에게 별개의 결과가 표시되지만 주소, 도시, 성 등의 추가 필드가 필요하지 않습니다. –

+0

'Select Distinct * From table'은 다음과 같습니다. 모든 행이 표준 테이블에서 고유하기 때문에'SELECT * From table'과 동일합니다. –

관련 문제