希望高手指点,求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值也是按日期进行排序的)
------解决方案--------------------create table a (id int,username nvarchar(10),valid nvarchar(1),create_date datetime)
insert into a (id,username,valid,create_date)
select 1, 'admin ', 'y ', '2007-3-1 ' union
select 2, 'yy ', 'y ', '2007-3-1 ' union
select 3, 'abc ', 'n ', '2007-3-3 ' union
select 4, 'ddd ', 'y ', '2007-3-1 ' union
select 5, 'sdf ', 'y ', '2007-3-4 ' union
select 6, 'love ', 'n ', '2007-3-1 ' union
select 7, 'like ', 'n ', '2007-3-6 ' union
select 8, 'good ', 'y ', '2007-3-1 '
select * from a order by valid desc,create_date desc
drop table a
------解决方案--------------------select * from 表 order by valid,create_date desc
------解决方案--------------------select * from 表 order by valid desc,create_date desc
------解决方案--------------------select * from [table] order by valid desc,create_date
------解决方案--------------------select * from tbName
order by valid desc,create_date desc
------解决方案--------------------ORDER BY 子句
指定结果集的排序。除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
语法
[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n ] ]
参数
order_by_expression
指定要排序的列。可以将排序列指定为列名或列的别名(可由表名或视图名限定)和表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
可指定多个排序列。ORDER BY 子句中的排序列序列定义排序结果集的结构。
ORDER BY 子句可包括未出现在此选择列表中的项目。然而,如果指定 SELECT DISTINCT,或者如果 SELECT 语句包含 UNION 运算符,则排序列必定出现在选择列表中。