请教个sql语句,

白骨神经 2015-08-18 10:36:23
有3张表,
order订单表:
orderId--订单id


payment支付表:
orderId--订单id(如果为单个订单支付就是xxxxxxxxxxx,多个订单支付就是mxxxxxxxxxxxxxx,对应下表的)
paymethod--支付方法


ordersGroup多订单表(这张表就相当于多订单支付的记录):
groupId--联合订单Id--mxxxxxxxxxxxxxxxxx
orderIds--对应订单id--xxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxx(对应order订单表里的orderId)

刚刚写了个sql,联合order和payment表得到paymethod列,但是突然想到,如果为多订单,payment表的orderId为mxxxxxxxxxx时候,order表里的orderId与payment表的orderId不对应,有什么办法能避免这种情况?求大神帮帮忙
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
白骨神经 2015-08-18
  • 打赏
  • 举报
回复
引用 3 楼 gukuitian 的回复:
大概可以这样 select paymethod from payment where orderId= case (select groupId from ordersGroup where orderIds like '%参数orderId%') when null then 参数orderId else (select groupId from ordersGroup where orderIds like '%参数orderId%') end;
mysql,我不小心开了2个帖子,刚刚没看到,我去试试,谢谢了。
gukuitian 2015-08-18
  • 打赏
  • 举报
回复
大概可以这样 select paymethod from payment where orderId= case (select groupId from ordersGroup where orderIds like '%参数orderId%') when null then 参数orderId else (select groupId from ordersGroup where orderIds like '%参数orderId%') end;
  • 打赏
  • 举报
回复
那你就需要写函数去区分了,然后用in 去做筛选 ,或者直接用like去匹配订单,但是这样会效率很低
gukuitian 2015-08-18
  • 打赏
  • 举报
回复
得说下是什么数据库啊

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧