比如有表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)
这种写法太复杂,有没有简便的方法
数据库表A如何关联另一个表某字段最大值对应的内容
答案:2 悬赏:60 手机版
解决时间 2022-01-01 03:30
- 提问者网友:夢醒日落
- 2021-12-31 19:41
最佳答案
- 五星知识达人网友:怙棘
- 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;看起来不复杂的倒是没有,效率高一点的倒是有一个
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))
呵呵,应该将问题解决了,^_^
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯