2016-09-29 68 views
0

我已在SQL查詢以下SQL查詢與子句兩列的順序,既降

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

這是我的理解是第一次的數據將通過鈧與最新的掃描來第一次進行排序,並那麼數據就會按姓氏和鉛的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行是第一行和第二行是條形行,但是當我將scandate列添加到訂單時,條形行是第一行。

總之,是不是2 DESC條款多餘,一個就足夠了?

+1

不,你需要兩個'DESC',因爲如果沒有它,你會說'ORDER BY ScanDate ASC,LastName ASC,LeadID DESC'。 – Siyual

回答

0

我相信,如果你沒有在order by子句中加上「DESC」,那麼適用的邏輯就是它的默認排序是「ASC」。因此,您必須在每個字段後放置一個DESC(但ASC不需要)。

0

如果你沒有聲明列中的排序類型,默認情況下,SQL將以「ASC」的方式排序,你想排序的所有列「DESC」你需要在「DESC」之後放置「DESC」