Mysql 看起来像这样:
SELECT CompanyName , LastName , FirstName FROM ... JOIN ...
ORDER BY CompanyName , LastName , FirstName
现在的问题是 A 列有时是空的(或者是NULL
or ""
),而且我不希望最终出现所有这些结果。
在示例中,我希望将第四个条目(以 C 开头)作为第三个条目。但如果我只是 ORDER BY,就会发生这种情况:
Avagax Bauer Frank
Bele AG Smith John
Mork AG Baggins Frodo
Chen Jun
此外,有时在某些情况下我会有更多的排序列,或者更重要或更不重要。这might具有相关性。
附录:姓氏或公司必须有一个有用的字符串。名字完全是可选的。系统是 PostgreSQL(8.4,可能会迁移到 9),还有 SQLite。独立于供应商将是一个优势,因为潜在客户已经在运行 Oracle 和 SQLServer。
您可能需要调整它以满足您的需求,但根据我的理解,这应该可以解决问题:
SELECT CompanyName , LastName , FirstName FROM ... JOIN ...
ORDER BY COALESCE(CompanyName , LastName, FirstName),
COALESCE(LastName, FirstName),
FirstName
这将主要按三列中不为空的列进行排序,然后按姓氏或名字,最后按名字排序。在我看来,这个顺序没有多大意义,但是YMMV。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)