日期:2014-05-17  浏览次数:20517 次

怎样用SQL语句 按日期进行从高到低进行排序呢~~
select * from (select .... from ca_applicant_info cai,ca_order_info coi 
 where coi.USERID = cai.id and coi.ispay=1 and coi.delflag=0 and coi.state=0

 )wk where wk.rn> 0 and wk.rn<=2  
 order by createdate DESC 
这样子写 只能取出前两条记录再进行排序的~~~那不对了!!!我是想 排序后 取出头两天记录的~~~有哪位兄弟知道的 帮下忙哈

------解决方案--------------------
SQL code
SELECT  *
FROM    ( SELECT    ...
          FROM      ca_applicant_info cai ,
                    ca_order_info coi
          WHERE     coi.USERID = cai.id
                    AND coi.ispay = 1
                    AND coi.delflag = 0
                    AND coi.state = 0
         ORDER BY createdate DESC   --写到这儿
        ) wk
WHERE   wk.rn > 0
        AND wk.rn <= 2

------解决方案--------------------
SELECT *
FROM (SELECT Cai.*,Coi.* ,row_number()over(ORDER BY Cai/Coi.Createdate) rn 
FROM Ca_Applicant_Info Cai, Ca_Order_Info Coi
WHERE Coi.Userid = Cai.Id
AND Coi.Ispay = 1
AND Coi.Delflag = 0
AND Coi.State = 0

) Wk
 WHERE Wk.Rn > 0
AND Wk.Rn <= 2
--ORDER BY Createdate DESC
------解决方案--------------------
不是太明确lz的问题点。

还是请LZ 给表结构,数据,和要求的结果样式吧。
------解决方案--------------------
探讨

恩 是这样的 其实我的目的就是要将数据排序 然后取出X~y条 排序后的记录 现在 行了 感谢 各位 谢谢~~~~二楼的 做法 可以 select * from (select coi.*, row_number()over(ORDER BY Coi.Createdate DESC) rn,from ca_applicant_info cai,ca_order_info coi
……

------解决方案--------------------
探讨
为什么需要改动呢 我这样做也可以啊 这样改动 有什么好处啊~~