SQL连接查询问题:无法查询会员Rahul借阅的图书名称
解决查询会员Rahul借阅图书名称的SQL错误
错误分析
原SQL语句存在语法错误:多表用逗号分隔后,连接条件不能直接跟在表名之后,必须将连接条件与过滤条件一同放在WHERE子句中;此外,这种隐式连接写法易产生笛卡尔积,更推荐使用显式JOIN语法,逻辑更清晰。
正确查询语句
方法1:修正隐式连接写法
SELECT bname FROM book_master, member_master, register WHERE member_master.mcode = register.mcode AND register.bcode = book_master.bcode AND member_master.name = 'rahul';
方法2:显式INNER JOIN写法(推荐)
显式连接可读性更强,能有效避免意外的笛卡尔积,同时使用表别名简化语句:
SELECT b.bname FROM member_master m INNER JOIN register r ON m.mcode = r.mcode INNER JOIN book_master b ON r.bcode = b.bcode WHERE m.name = 'rahul';
说明
两种写法均通过member_master与register的mcode字段关联会员和借阅记录,再通过register与book_master的bcode字段关联借阅记录和图书信息,最终筛选出会员Rahul借阅的图书名称。
内容的提问来源于stack exchange,提问作者BIJAY GHOSH
相关产品推荐
相关产品推荐

