SQL Fiddle : 테이블에 5 개의 레코드가 있으며 NAME과 ID의 5 가지 조합이 있습니다. 따라서 게시 한 쿼리는 모든 행을 반환합니다. 효과적으로 그들은 단지 데이터베이스가 고유성을 보장 할 의무를 보잘것없는 종류의 여분의 자원 소비와 ... ...이 쿼리로
select name, id from test;
를 동일합니다. NAME과 ID가 중복되었지만 다른 EMAIL이있는 새 레코드를 추가하면 무슨 일이 일어나는지 이해하는 데 도움이됩니다. 절은 고유 결과 집합을 생성하는 데 충분해야 WHERE 제대로 정의 :
당신은 DISTINCT 사용하는 것이 실제로 현실에서 매우 드문 것을 이해해야한다. GROUP BY는 일반적으로 COUNT() 또는 SUM()과 같은 집계 함수와 함께 사용됩니다. 예를 들어 NAME + ID에 EMAIL이 둘 이상 있습니까?
select name, id from test
group by name, id having count(*) > 1;
주문의 경우 실행 된 쿼리는 정렬이 필요하므로 결과 집합의 순서는 입력 순서와 다를 수 있습니다. 오라클은 결과 집합의 순서를 보장하지 않지만 정렬을 수행하면 예측 가능성이 낮아집니다. 그 보증을 얻으려면이 ORDER BY 절을 지정해야합니다 :
select distinct name, id from test
order by name, id
그 결과 세트에 관계없이 필터링 할 때 다른 처리가 발생 무엇인지, 어떤 문 같은 순서를 보장하고 처리 할 ORDER BY 절.
출처
2013-04-28 13:59:21
APC