不确定这里发生了什么,希望有人可以对此有所了解。
两个查询,几乎相同,除了第一个只选择一个日期列,而第二个选择另一个列:
SELECT TOP 1 CreationDate
FROM Receipts
WHERE CreationDate IS NOT NULL
ORDER BY 1
返回
CreationDate
1802-11-01 00:00:00.000
第二次查询
SELECT TOP 1 Rct_Id, CreationDate
FROM Receipts
WHERE CreationDate IS NOT NULL
ORDER BY 1
返回
CreationDate
1994-02-14 00:00:00.000
第二个是合理的和预期的,或多或少可追溯到创建数据集时。我跑了第二组,更改了ORDER BY 1 DESC并得到了
CreationDate
5202-11-01 00:00:00.000
Rct_Id CreationDate
714350 2015-02-27 00:00:00.000
我真的很困惑,为什么日期会因为选择它自己而改变。关于发生了什么的任何想法?
答案 0 :(得分:5)
ORDER BY 1
是序号的顺序,这是SELECT
SELECT TOP 1 CreationDate
FROM Receipts
WHERE CreationDate IS NOT NULL
ORDER BY 1
表示从CreationDate
升序排序的表收据中获取一条记录。
SELECT TOP 1 Rct_Id, CreationDate
FROM Receipts
WHERE CreationDate IS NOT NULL
ORDER BY 1
表示从Rct_id
升序
要获得与第一个查询相同的结果,请使用ORDER BY 2
或明确指定列名称(良好做法)。同样适用于DESC
。
SELECT TOP 1 Rct_Id, CreationDate
FROM Receipts
WHERE CreationDate IS NOT NULL
ORDER BY CreationDate /* Or ORDER BY 2 */