爱学Java的虹夏同学 2022-07-27 00:01 采纳率: 100%
浏览 41
已结题

Mysql 查询语句中where字段= "" 作用是什么 ?如何实现多条件查询

问题遇到的现象和发生背景

Mysql

问题相关代码,请勿粘贴截图

比如说表A存放许多查询图书的条件,表B存放图书馆全部书的信息,根据条件查询书的id,因为前端是图书馆管理系统,多条件查询,同时部分查询条件可以为空
select bid from a,b where( b.bname in (a.bname) or b.bname = "" ) and
(b.bauthor in (a.author) or b.bauthor = '''' )
第一个问题 b.bname = "" 作用是什么 ?

运行结果及报错内容

img

img

img


第二个问题,为什么这条查询语句没有实现 多条件查询,部分查询条件可以为空?
select bid from book a ,querybook b where ( b.bname in (a.bname) or b.bname = "" ) and
(b.bauthor in (a.bauthor) or b.bauthor = "" ) and
(b.barea in (a.barea) or b.barea = "" )

  • 写回答

3条回答 默认 最新

  • bekote 2022-07-27 09:43
    关注

    select * from a,b获取连接表如下

    img

    所以对于 where条件 ( b.bname in (a.bname) or b.bname = "" ) and
    (b.bauthor in (a.bauthor) or b.bauthor = '''' )
    就是筛选连接表记录 (b.bname等于a.bname或者b.bname为空字符串)并且(b.bauthor等于a.bauthor或者b.bauthor为空字符串)

    第二个问题,b.bname = ""是判断b.bname是否为空字符串,b.bname is null是判断b.bname是否为空,两者是不一样的,你的数据表里bname值是null,得用 is null作为查询条件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月27日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同