关于SQL查询
SELECT s.shop_id, s.shop_name, s.shop_desc, s.shop_addr, s.phone, s.shop_img, s.priority, s.create_time, s.last_edit_time, s.enable_status, s.advice, a.area_id, a.area_name, sc.shop_category_id, sc.shop_category_name FROM tb_shop s, tb_area a, tb_shop_category sc WHERE s.area_id=a.area_id AND s.shop_category_id = sc.shop_category_id AND s.shop_id = 1
老师你好,我测试过程中发现一个问题,我的表中有一个数据没有shop_category_id,然后我用上面这段SQL查询的时候得到的是空,查询其他的行是正常的,当我将shop_category_id补上以后,执行同样的查询就可以查到了,我想不明白这是为什么,麻烦老师看一下谢谢
30
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕酷酷
2020-02-24 16:46:41
同学你好,
1、同学要首先明白这个sql语句的含义:表示通过店铺id查询店铺信息。
2、这里的这个sql语句有三个限定条件,分别是:s.area_id=a.area_id 和s.shop_category_id = sc.shop_category_id 和 s.shop_id = 1,这里同学编写的语句中限定店铺id为1,也就只有一条数据,并且店铺表中的shop_category_id为null,所以也就没有与分类表匹配值相等的数据,所以查询出来为null。
例如:
这里同学可以尝试将限定店铺id的条件删除。则就可以查询出其他匹配的数据,如:
老师将shop_category_id置为null,如:
3、老师这里所描述的外键查询,表示进行等值连接,查询数据,而不是进行约束查询哦!
4、这里使用left join的结果会与当前sql的结果不一致,以为left join表示左连接,也就是以左表为基准,右表进行匹配,会将null的值进行查出,如:
SELECT s.shop_id, s.shop_name, s.shop_desc, s.shop_addr, s.phone, s.shop_img, s.priority, s.create_time, s.last_edit_time, s.enable_status, s.advice, a.area_id, a.area_name, sc.shop_category_id, sc.shop_category_name FROM tb_shop s left join tb_area a on s.area_id=a.area_id left join tb_shop_category sc on s.shop_category_id = sc.shop_category_id where s.shop_id = 1
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
4. SSM到Spring Boot入门与综合实战
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星