永发信息网

数据库表A如何关联另一个表某字段最大值对应的内容

答案:2  悬赏:60  手机版
解决时间 2022-01-01 03:30
  • 提问者网友:夢醒日落
  • 2021-12-31 19:41
比如有表A,表B,A表是卡号 kid,姓名 name,B表是,卡号 kid,消费时间 time ,消费商品 item,商品单价price,数量 num等等。
我想通过A表的卡号关联B表卡号,并且只显示消费时间这一字段最大的那一行的数据。
我现在只能用
select * from A a left join B b on a.kid=b.kid and (b.kid,b.time) in (select c.kid,max(c.time) from B c where c.kid=a.kid group by c.kid)
这种写法太复杂,有没有简便的方法
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-12-31 20:05
SELECt 全部字段
  FROM (SELECt 全部字段,
               --根据A.KID分组后按照B.TIME倒序编号
               ROW_NUMBER() OVER(PARTITION BY A.KID ORDER BY B.TIME DESC) RNO
          FROM A A
          LEFT JOIN B B
            ON A.KID = B.KID) C
 --去编号为一的数据,也就是时间最大的那一行数据
 WHERe C.RNO = 1;看起来不复杂的倒是没有,效率高一点的倒是有一个
全部回答
  • 1楼网友:逃夭
  • 2021-12-31 21:30
需要用到函数mid(string, start[, length]) ,与函数len(string)函数, 其中的length长度使用 len(2008-09-29 08:36:20)取得即可,这样就可以了, 具体的sql语句为: update 表 set 字段=mid(字段,1,len(2008-09-29 08:36:20)) 呵呵,应该将问题解决了,^_^
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯