求给个思路

怎么根据不同的条件执行不同的sql?orcale

select * from A

select * from B  where year='2021'

select * from c  where week='202105'

当B,C表没有传递条件,查询A;当B有条件查询B表;当C有条件查询C表;B,C都有条件,只查C

有啥函数可用?

用户kWEye3931 发布于 2021-6-3 15:20 (编辑于 2021-6-3 15:46)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-6-3 15:31(编辑于 2021-6-3 15:51)

逻辑有问题啊

按照你的描述 是否当B,C都有值则只查询B不管C???

image.png

  • 用户kWEye3931 用户kWEye3931(提问者) B,C都有条件,只查C
    2021-06-03 15:41 
  • Z4u3z1 Z4u3z1 回复 用户kWEye3931(提问者) 那顺序应该就:如果BC都为空则查询A,反之 如果 BC都不为空则C,反之 如果B不为空则B ;反之C
    2021-06-03 15:51 
最佳回答
0
luojian0323Lv7资深互助
发布于2021-6-3 15:23

AB都有查询哪个表?

一看你这逻辑就有漏洞啊

  • 用户kWEye3931 用户kWEye3931(提问者) A永远没条件,B,C表查询条件不同
    2021-06-03 15:24 
  • luojian0323 luojian0323 回复 用户kWEye3931(提问者) BC都有条件,查询哪个?
    2021-06-03 15:26 
  • 用户kWEye3931 用户kWEye3931(提问者) 回复 luojian0323 B,C都有条件,只查C
    2021-06-03 15:41 
  • luojian0323 luojian0323 回复 用户kWEye3931(提问者) 那你参考 shiroko 的答案 把B表查询和C表查询顺序改一下。
    2021-06-03 15:56 
最佳回答
0
shirokoLv6资深互助
发布于2021-6-3 15:26

${

IF(LEN(YEAR)>0,"select * from B WHERE YEAR='"+YEAR+"'",

IF(LEN(week)>0,"select * from C WHERE WEEK='"+week+"'",

"select * from A"

)

)

}

最佳回答
0
18387099203Lv5见习互助
发布于2021-6-3 15:43(编辑于 2021-6-3 16:12)

写个简单的存储过程,把你的条件作为数据集的参数,把参数传到存储过程并获取参数字符长度作为if判断条件。长度为0查A表,等于6查C表,其他查B表

  • 4关注人数
  • 408浏览人数
  • 最后回答于:2021-6-3 16:12
    请选择关闭问题的原因
    确定 取消
    返回顶部