2016-09-29 67 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”