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 = "" 作用是什么 ?
select * from a,b获取连接表如下
所以对于 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作为查询条件
第一个问题 b.bname = ""表示是可以查询出图书名称为空的图书信息.
b.bauthor in (a.author) or b.bauthor 作用 是筛选所有,有书名但是可以没有作者名称的书
2 查询条件可以为空。