5
回答
请教大神,在数据库中的两个表中各取一个字段(允许为null),将结果拼接为两列,该怎么写?
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

 向大家请教个问题,数据库中有两张表,一个是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

请大家不吝指教!!! 

举报
同一派
发帖于3年前 5回/700阅
共有5个答案 最后回答: 3年前

子查询很费时间的,你干嘛不用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
顶部