过滤id为\'10642\'\'14513\'\'14511\'\'10643\'且pname为[高中]或[初中]

当pname为[高中]或[初中]时id不能为10642''14513''14511''10643这几个值的SQL怎么写啊

FineReport Childe 发布于 2020-7-9 15:30 (编辑于 2020-7-9 15:36)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
luojian0323Lv7资深互助
发布于2020-7-9 15:34(编辑于 2020-7-9 15:54)

pname 为:是或否 难道还有其他值?

是写数据集过滤,还是在单元格中过滤


你的标题和你的内容词不搭意


select * from table
where 1=1
${if(len(pn)==0,"","and pname in('"+pn+"')")}
${if(pname in("高中","初中"),"and id not in('10642','14513','14511','10643')","")}


  • Childe Childe(提问者) 这样写pname里只有初中和高中了其他的值都没有了
    2020-07-09 15:45 
  • luojian0323 luojian0323 回复 Childe(提问者) 那要定义pname参数,然后id根据pname值,做过滤
    2020-07-09 15:51 
  • Childe Childe(提问者) 回复 luojian0323 不用参数不行吗
    2020-07-09 16:27 
  • luojian0323 luojian0323 回复 Childe(提问者) 不用参数,怎么知道你的pname选了哪个值? 你的目的是为了正确过滤数据,只要你的pname选中了 初中或者高中 就过滤id为\'10642\',\'14513\',\'14511\',\'10643\'这几条数据
    2020-07-09 16:46 
最佳回答
0
张洪威Lv6高级互助
发布于2020-7-9 15:35(编辑于 2020-7-9 16:01)

sql过滤的话照下面这个写就行了,两个条件or一下。

select * from table

where (pname in ('高中','初中') and id not in ('10642','14513','14511','10643')) or

(pname not in ('高中','初中'))

  • 3关注人数
  • 409浏览人数
  • 最后回答于:2020-7-9 16:01
    请选择关闭问题的原因
    确定 取消
    返回顶部