首页 > 程序开发 > 【SQL】非NULL数据排序提前

【SQL】非NULL数据排序提前

2010年1月31日 发表评论 阅读评论

源于一个遇到的实际问题,抽象一下,表述问题如下:

有两张表main和attachment,其中attachment表的mianid字段对应到main表的mainid字段,如下

main表

mainid submittime
1 2010-1-3
2 2010-1-5
3 2010-1-7

attachment表

mainid attachments
1 a.gif
3 b.jpg

要求查询结果返回两表连接后的所有字段,且attachment表中有数据的项靠前,之后按submittime升序排序,即希望得到如下结果:

mainid submittime attachments
1 2010-1-3 a.gif
3 2010-1-7 b.jpg
2 2010-1-5 NULL

解决以上问题的SQL语句是:

SELECT *, (b.attachments IS NULL) as flag FROM main a LEFT JOIN attachments b ON a.mainid=b.mainid order by flag, a.submittime

说明:连接两表后,用IS NULL来生成了新列flag来表示main表中的项在attachment表中有没有数据,之后再进行排序。

[完毕]


枫芸志原创文章,转载请注明来源并保留原文链接

本文链接:http://witmax.cn/sql-null-order.html


分类: 程序开发 标签: 1,797次阅读
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。