2016-09-29 1 views
0

SQL 쿼리, 모두 내림차순 나는 SQL 쿼리 다음 한

SELECT [columns] 
FROM [Leads] 
ORDER BY Leads.scanDate DESC, Leads.lastName, Leads.LeadID DESC 

그것은 먼저 데이터가 최신의 스캔이 먼저 오는 scanDate으로 분류 될 것입니다 내 이해하고 다음 데이터가 마지막으로 이름과 리드 ID로 정렬됩니다, 그래서 ORDER BY 절은 단지 두 번째

ORDER BY scandate, lastName, LeadID DESC 

될 수있다,이 코드

DECLARE @tmptable table 
(
    scandate datetime, 
    lastname varchar(20), 
    leadid int 
); 
INSERT INTO @tmptable VALUES ('2016-05-10 10:21:30', 'bar', 21); 
INSERT INTO @tmptable VALUES ('2016-05-10 10:21:30', 'foo', 21); 

SELECT * 
FROM @tmptable 
ORDER BY leadid, lastname desc 
으로 문제를 진단하려고

결과는 foo 행이 첫 번째이고 bar 행은 두 번째입니다. 그러나 주문에 검색 열을 추가 할 때 막대 행이 첫 번째입니다.

즉, 2 개의 DESC 절이 중복되지 않습니까? 하나라도 충분합니까?

+1

아니요, 'ORDER BY ScanDate ASC, LastName ASC, LeadID DESC'가 없기 때문에 둘 다'DESC '가 필요합니다. – Siyual

답변

0

나는 당신이 order by 절에 "DESC"를 두지 않는다면 적용 가능한 논리는 기본 정렬이 "ASC"가 될 것이라고 믿는다. 따라서 각 필드 뒤에 DESC를 넣어야합니다 (그러나 ASC에서는 필요하지 않음).

0

컬럼에서 정렬 유형을 선언하지 않으면 SQL은 기본적으로 "ASC"방식으로 정렬됩니다. 정렬하려는 모든 컬럼 "DESC"다음에 "DESC"를 넣어야합니다 컬럼