sql,如果对2张表,按时间排序呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql,如果对2张表,按时间排序呢?相关的知识,希望对你有一定的参考价值。

表1: comment(评论的数据)
id comment_content(评论内容) create_time(评论时间)

表2: comment_reply(回复的数据)
id comment_id(comment的id) replyContent(回复内容) create_time(回复时间)

要求:按照“评论时间”和“回复时间”最新排序,取得前10条数据
(comment不一定有回复的)
检索出的结果,最好能区别出是哪个表的数据。

下面表中,用的是left join,即使其中一个表没数据,也会填冲,能清晰的分辨出吗,

可以考虑用union实现,另外用常量区分数据来源
select * from
(select * from (select 'comment' ly ,comment_content cc,create_time ct from comment order by create_time desc ) where rownum<=10
union
select * from(select 'comment_reply' ly ,replyContent cc,create_time ct from comment_reply order by create_time desc)where rownum<=10 )
where rownum <=10;
不过所提需求需要对两个表全扫描,数据量大的时候可能会有性能瓶颈追问

应用是分页获取的,如果不用sql,通过程序排序,那是不是要全表数据取出来呢,有没好的思路,非常感谢

追答

可以考虑两个表生成数据时用一个sequence生成一个顺序字段,这样只取该字段的最后十个数的数据就行了。

追问

数据是根据插入的顺序排的

参考技术A 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
  不需要改动,数据库会自动识别Createdate时间格式,不需要convert转换.追问

非常感谢,不过好像和问题没有关联哎

本回答被提问者采纳

同张表中同时查询两个字段显示一个字段,对两个字段进行按时间排序

select b.bid_name as bidName,bd.repayment_way as depict,r.exact_repayment_time as time,
r.should_repayment_principal as amount, 待收本金 as typeContent
from repayment r
INNER JOIN bid b
ON r.bid_id = b.bid_id
INNER JOIN bid_details bd
ON b.bid_id = bd.bid_id
where r.user_id=1 and r.state = 1
UNION
select b.bid_name as bidName,bd.repayment_way as depict,r.exact_repayment_time as time,
r.should_repayment_interest as amount, 待收利息 as typeContent
from repayment r
INNER JOIN bid b
ON r.bid_id = b.bid_id
INNER JOIN bid_details bd
ON b.bid_id = bd.bid_id
where r.user_id=1 and r.state = 1
ORDER BY time

 

以上是关于sql,如果对2张表,按时间排序呢?的主要内容,如果未能解决你的问题,请参考以下文章

sql查询:使用内连接查询两张表的时候,如果左边表的一条记录对应了右边表的两条记录,结果显示排列问题

在SQL语句中,如何把两张表的数据按时间排序查询?

同张表中同时查询两个字段显示一个字段,对两个字段进行按时间排序

sql 排序,order by 按时间

sql怎么对列重新排序

sql语句时间排序 sql语句按照时间排序