【发布时间】:2014-08-21 18:40:50
【问题描述】:
我正在尝试按 ASC 顺序对整数字段进行排序,但它会自动将“0”值放在底部附近(刚好在 NULL 值上方)。
我使用的是 SQL Server 2005。我认为我的 DBMS 已经过时,因为我尝试使用 NULLS FIRST,但它未被识别。
*已编辑以显示更好的查询(感谢您的快速反馈)
我想看的:
PriSortOrder/社区名称
0/Towson
1/亚特兰大
2/巴尔的摩
空
我所看到的:
PriSortOrder/社区名称
1/亚特兰大
2/巴尔的摩
0/陶森
空
查询:
SELECT PriSortOrder, CommunityName
FROM Communities
WHERE InCatalog=1
ORDER BY PriSortOrder
【问题讨论】:
-
该查询不应导致该输出。你能在sqlfiddle.com 上创建一个最小的测试用例吗?确保使用架构中的类型和数据库中的实际数据。
-
您的查询不包括
PrioritySortOrder列的值。您是否正在查看Community列的值? -
ORDER BY CASE WHEN PrioritySortOrder=0 THEN 1 ELSE 0 END,PrioritySortOrder -
我认为您的数据和结果现在已正确显示(使用编辑框上方的
{}来缩进类似代码的材料 - SQL 语句和数据集)。您的查询也缺少其 FROM 子句。每个 DBMS 都会自行选择是先列出 NULL 还是最后列出。在标准 SQL 的更新版本中,如果您愿意(并且如果您的 DBMS 支持),您可以指定 NULLS FIRST 或 NULLS LAST。您应该确定您正在使用的 DBMS。
标签: sql integer sql-order-by