首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

希望,求SQL语句一条,多谢。

2012-03-09 
希望高手指点,求SQL语句一条,谢谢。。举例数据库表结构如下:idusernamevalidcreate_date1adminy2007-3-12yyy

希望高手指点,求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 运算符,则排序列必定出现在选择列表中。



此外,当 SELECT 语句包含 UNION 运算符时,列名或列的别名必须是在第一选择列表内指定的列名或列的别名。


说明 在 ORDER BY 子句中不能使用 ntext、text 和 image 列。


ASC

指定按递增顺序,从最低值到最高值对指定列中的值进行排序。

DESC

指定按递减顺序,从最高值到最低值对指定列中的值进行排序。

空值被视为最低的可能值。

对 ORDER BY 子句中的项目数没有限制。然而,对于排序操作所需的中间级工作表的大小有 8,060 字节的限制。这限制了在 ORDER BY 子句中指定的列的合计大小。


看明白了

热点排行