开发者社区> 问答> 正文

请教大神,在数据库中的两个表中各取一个字段(允许为null)将结果拼接为两列,该怎么写?:报错

 向大家请教个问题,数据库中有两张表,一个是purchase_intents,一个是deals,
现在是从两张表中分别取其中的一个字段的最大值,然后将结果拼接成两列,两个结果都有为null的情况,请教大家一种比较好的写法,下面是我写的,虽然能得到结果,但是感觉这样写太丢人了 select (select max(p.intent_time) from purchase_intents p where p.account_id=?)intentTime,(select max(d.created_at)  from deals d where d.account_id=?)createdTime

请大家不吝指教!!! 

展开
收起
kun坤 2020-06-09 12:10:08 388 0
1 条回答
写回答
取消 提交回答
  • v那两个字段是什么类型,数值还是文本,char,varchar,text什么的都不好比他们大小的###### 子查询很费时间的,你干嘛不用join?
    select max(t1.intentTime),max(t2.createdTime) from purchase_intents as t1 outter join deals as t2 on p.account_id=? and p.account_id=?
    先试下行不这个 ######

    引用来自“BJming”的评论

    那两个字段是什么类型,数值还是文本,char,varchar,text什么的都不好比他们大小的 是datetime类型的字段######

    引用来自“pricker”的评论

    子查询很费时间的,你干嘛不用join? select max(t1.intentTime),max(t2.createdTime) from purchase_intents as t1 outter join deals as t2 on  p.account_id=? and p.account_id=? 先试下行不这个 哦,我用的是mysql数据库,忘了说了,不好意思,我记得mysql不支持outter的,试过了,用outter会报错######

    引用来自“BJming”的评论

    那两个字段是什么类型,数值还是文本,char,varchar,text什么的都不好比他们大小的

    引用来自“guangzhen”的评论

    是datetime类型的字段 不直接通过比大小,试试通过降序排列,只取一个实现,参考代码:order by intent_time desc limit 0,1和 order by createdTime desc limit 0,1
    2020-06-09 12:10:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载