碰巧,我注意到对 SQL Server 数据库中我的一个表的查询结果做了一些意想不到的事情,我不知道为什么。
为简洁起见,我从查询中删除了一些字段,仅包括排序条件。考虑下面代码中的两个查询:
bindingSource_History.DataSource = AsTable("SELECT [Serial Number], [Actual Ship Date] FROM dbo.History");
bindingSource_History.Sort = "Actual Ship Date DESC";
和
bindingSource_History.DataSource = AsTable("SELECT TOP 100 [Serial Number], [Actual Ship Date] FROM dbo.History ORDER BY [Actual Ship Date] DESC");
它们之间的主要区别在于,一个返回按日期排序的“历史”表的全部内容,另一个返回用户设置的数量。默认情况下,历史记录表按序列号升序排序,序列号为 nvarchar 类型。
查看结果,我注意到第二个查询返回了一组稍微乱序的数据:
为什么是这样?其余行已正确排序,第一个查询似乎按预期工作,翻转图片中圈出的行。SQL Server 排序筛选器的作用与BindingSource
?
我什至注意到,当我追加WHERE [Actual Ship Date] = '08/01/2013'
到第二个查询时,它会以正确的顺序放置行。任何人都可以对此有所了解吗?结果并没有太大的错误,但在我的程序的上下文中它们仍然是错误的。