回 帖 发 新 帖 刷新版面

主题:希望高人指点 MS SQL 语句,谢谢。

举例数据库表结构如下:
id   username    valid  create_date
1      admin       y      2007-3-1
2       yy         y      2007-3-1
3      abc         n      2007-3-1
4      ddd         y      2007-3-1
5      sdf         y      2007-3-1
6      love        n      2007-3-1
7      like        n      2007-3-1
8      good        y      2007-3-1

需求: 我想通过一条查询语句,得到这样的结果: valid(有效)值等于Y的在查询结果的最前面,而valid(有效)值等于n的排在后面,并以create_date进行升序或是降序的排序,如果valid值都为n那么就按create_date 进行排序,如果valid值都为y那么也按create_date 进行排序,不知道大家能明白我的意思吗。

在说的简单一点就是,我在数据库中,排序是按 create_date(创建日期)进行排序的,但是,valid这一列,如果有值是y的,一定要排在查询结果的最前面。(而且这列valid值也是按日期进行排序的)

回复列表 (共3个回复)

沙发

select * from table
order by case when valid='y' then 0 else 1 end,create_date

板凳


   楼上的果然是高手啊!!顶!

3 楼

select * from table
order by valid desc,create_date

我来回复

您尚未登录,请登录后再回复。点此登录或注册