问下这个业务你们是怎么处理的或者sql怎么写

powersabc 2018-10-07 11:13:04
现在mysql有个表格tb1如下,3的course字段为null,现在前端会传多个course参数给后端查找对应的id集合,后端要怎么写sql语句? 用in的话则查不了id=3,因为course为null?

id course
1 math
2 math
3
4 chemistry
...全文
852 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 15 楼 DAVE_JAVA 的回复:
引用 13 楼 zdx355 的回复:
[quote=引用 12 楼 DAVE_JAVA 的回复:]
除了楼上说的加is null我觉得你可以先用nvl格式化空的数据,因为你要的不是id的集合么。
nvl是oracle的


思路是一样的就是把空置换成自己想要的数据。他想查这个数据肯定要可选。mysql应该是有类似的方法吧[/quote]mysql有没有折中的方式不清楚,反正没有nvl这个方法,不要混淆呦
DAVE-BLACK 2018-10-22
  • 打赏
  • 举报
回复
引用 13 楼 zdx355 的回复:
引用 12 楼 DAVE_JAVA 的回复:
除了楼上说的加is null我觉得你可以先用nvl格式化空的数据,因为你要的不是id的集合么。
nvl是oracle的


思路是一样的就是把空置换成自己想要的数据。他想查这个数据肯定要可选。mysql应该是有类似的方法吧
  • 打赏
  • 举报
回复
你都说了,业务是要根据course参数查id的,你course都是null还查什么id?是null就是没有这个课程,你没课程你怎么知道课程的id?id就是课程的唯一标识,换个说法就是,你没有课程还去查课程,没有意义的
  • 打赏
  • 举报
回复
引用 12 楼 DAVE_JAVA 的回复:
除了楼上说的加is null我觉得你可以先用nvl格式化空的数据,因为你要的不是id的集合么。
nvl是oracle的
G.Jagger 2018-10-22
  • 打赏
  • 举报
回复
为什么不把id和course一起给前端?还要再通过course查id集合?
DAVE-BLACK 2018-10-20
  • 打赏
  • 举报
回复
除了楼上说的加is null我觉得你可以先用nvl格式化空的数据,因为你要的不是id的集合么。
baidu_39535885 2018-10-10
  • 打赏
  • 举报
回复
ifnull(course,'') in ('xxx','xxxx')
  • 打赏
  • 举报
回复
建议course字段用默认值,不要用null
小灰狼 2018-10-10
  • 打赏
  • 举报
回复
select Id from tb1 where course in (....) or course is null
xiaovhao 2018-10-09
  • 打赏
  • 举报
回复
存在null的情况下,用in会有问题,建议设置默认值为‘’,空字符串
「已注销」 2018-10-08
  • 打赏
  • 举报
回复
需要把id为3的也查出来,可以使用下面这个语句:
SELECT id FROM tb1 WHERE course IN ('math','chemistry') OR course IS NULL;
艾德 2018-10-08
  • 打赏
  • 举报
回复
是说前端也会传null来查? 这样的话只能先检查是不是传了null,如果传了加个 or course is null
柒拾~ 2018-10-08
  • 打赏
  • 举报
回复
你是想通过course这个字段查询id对吧,条件加一个course is null就可以了。
qaz125 2018-10-08
  • 打赏
  • 举报
回复
要查NULL的条件加个IS NULL不就可以?不是很明白想做到什么效果
程序员不鸣 2018-10-08
  • 打赏
  • 举报
回复
select t1.id from tb1 t1 where id in (select t2.id where t2.course = ?) ,这个不能查null吗
getdate 2018-10-08
  • 打赏
  • 举报
回复
这个问题,你的结果应该是不定的,也就是说并不一定是你传了几个,就能带出几个ID 的,因为匹配空的有多个值.还有就是匹配course的也有可能有多个ID

假设传入一个 math 得到所有符合 math 的集合,那你可以用in ;

如果 你传入的 集合中有 值为空 的,如果你要得到所有值为空的,那 就需要先判断集合中是否有控制,如果有控制,需要把空值从结合中剔除,并且添加 or course is null 条件
_Ricky_ 2018-10-08
  • 打赏
  • 举报
回复
course为Null为什么要查出来?不是很理解

81,092

社区成员

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

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