微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – ORDER BY,列有时为空

我的sql看起来像这样:
SELECT CompanyName,LastName,FirstName FROM ... JOIN ...
ORDER BY CompanyName,FirstName

现在问题是列A有时是空的(无论是NULL还是“”),我不希望所有这些结果最终都出现.

在这个例子中,我想让第四个条目(以C开头)成为第三个条目.但如果我只是ORDER BY,会发生这种情况:

Avagax Bauer Frank
Bele AG Smith John
Mork AG Baggins Frodo
Chen Jun

此外,在某些情况下,我有时会有更多的订单列,或者更重要或更不重要.这可能是相关的.

附录:姓氏或公司必须有一个有用的字符串.名字是完全可选的.系统是Postgresql(8.4,可能迁移到9),也是sqlite.供应商独立性将是一个优势,因为潜在客户已经在运行Oracle和sqlServer.

解决方法

您可能需要调整它以满足您的需求,但我理解它的方式,这应该是诀窍:
SELECT CompanyName,FirstName FROM ... JOIN ...
ORDER BY COALESCE(CompanyName,FirstName),COALESCE(LastName,FirstName

这将主要按三个非首先为空的列中的任何一个进行排序,然后是最后一个或第一个名称,最后是名字.在我看来,这种排序没有多大意义,但是YMMV.

原文地址:https://www.jb51.cc/mssql/77865.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐