我有以下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条款不是多余的,一个就足够了吗?
答案 0 :(得分:0)
我相信如果你没有在order by子句中加上“DESC”,那么适用的逻辑就是它的默认排序是“ASC”。因此,您必须在每个字段后面放置一个DESC(但ASC不需要)。
答案 1 :(得分:0)
如果你没有在列中声明排序类型,默认情况下SQL会排序为“ASC”,所有要排序的列“DESC”你需要在“DESC”之后放置“DESC”柱