在两列上都有order by子句的SQL查询,都是降序

时间:2016-09-29 18:40:36

标签: sql-server sql-order-by

我有以下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行是第二个,但是当我将scandate列添加到订单时,bar行是第一个。

简而言之,两个DESC条款不是多余的,一个就足够了吗?

2 个答案:

答案 0 :(得分:0)

我相信如果你没有在order by子句中加上“DESC”,那么适用的逻辑就是它的默认排序是“ASC”。因此,您必须在每个字段后面放置一个DESC(但ASC不需要)。

答案 1 :(得分:0)

如果你没有在列中声明排序类型,默认情况下SQL会排序为“ASC”,所有要排序的列“DESC”你需要在“DESC”之后放置“DESC”柱