求一个sql语句:
数据库里有一个字段flag,还有一个datetime型字段
我要检索所有flag=1的数据放到最顶,然后还要datetime(注意:他的flag不等于1)最新的数据(要注意:就是BBS的最新帖子功能,但是置顶帖子放最上面),只要前40条 比如说flag=1的有10条,那么还有30条是FLAG=0的 但是flag=0的必须是最新的,而且时间要注意会有交叉
数据库里有一个字段flag,还有一个datetime型字段
我要检索所有flag=1的数据放到最顶,然后还要datetime(注意:他的flag不等于1)最新的数据(要注意:就是BBS的最新帖子功能,但是置顶帖子放最上面),只要前40条 比如说flag=1的有10条,那么还有30条是FLAG=0的 但是flag=0的必须是最新的,而且时间要注意会有交叉
表A
datetime flag
2006-10-1 0
2006-10-2 1
2006-10-3 0
2006-10-4 1
2006-10-5 1
...
2006-12-30 0
要求选择出所有的flag=1的数据,如果不到40条,则用时间(datetime)最新的补充足够40条
选择出来的应该是这样
2006-10-2 1
2006-10-4 1
2006-10-5 1
2006-12-30 0
2006-11-01 00:00:00.000 0
2006-11-01 00:00:00.000 1
2006-11-01 00:00:00.000 0
2006-11-01 00:00:00.000 0
2006-11-02 00:00:00.000 1
2006-11-02 00:00:00.000 0
2006-11-03 00:00:00.000 0
2006-11-03 00:00:00.000 0
2006-11-04 00:00:00.000 1
2006-11-05 00:00:00.000 0
2006-11-06 00:00:00.000 1
2006-11-07 00:00:00.000 1
2006-11-07 00:00:00.000 0
2006-11-07 00:00:00.000 1
2006-11-08 00:00:00.000 0
2006-11-08 00:00:00.000 1通过select * from table1 order by flag desc ,[datetime] desc 查询出的结果是这样的
2006-11-08 00:00:00.000 1
2006-11-07 00:00:00.000 1
2006-11-07 00:00:00.000 1
2006-11-06 00:00:00.000 1
2006-11-04 00:00:00.000 1
2006-11-02 00:00:00.000 1
2006-11-01 00:00:00.000 1
2006-11-08 00:00:00.000 0
2006-11-07 00:00:00.000 0
2006-11-05 00:00:00.000 0
2006-11-03 00:00:00.000 0
2006-11-03 00:00:00.000 0
2006-11-02 00:00:00.000 0
2006-11-01 00:00:00.000 0
2006-11-01 00:00:00.000 0
2006-11-01 00:00:00.000 0