查询商品分类id为10或11的商品对应的商品信息

一. 查询商品分类id为10或11的商品对应的商品信息(多表查询)

本题目要求编写SQL语句, 以sh_goods_category表为主表,sh_goods表为从表,查询商品分类id为10或11的商品对应的商品id、商品名称、分类id及分类名称。注意:查询结果显示字段依据输出样例设置。 提示:请使用SELECT语句作答

作为一个初学者, 相信有很多人在第一次做这道题的时候都遇见了自己的问题, 接下来给大家分析一下这道题的坑(有点多啊)

  1. 当两个表单做外连接操作时, 要分清楚以谁为主表, 右边的表是主表则使用right join, 反之使用left join
  2. 当两个表单做外连接操作时, 除了要写上连接条件外, 如若还有其他的条件, 要以主表的的字段为判断属性
  3. 此外, 这道题由题意可知, sh_goodssh_goods_category做完外连接后, 查询商品分类id为10或11的商品

这里, 咱们主要说一下条件放在on和放在where后面的区别;

  • 当条件放在on后面, 后面的条件视为连接条件, 如果不满足, 则显示主表的数据, 从表中的数据以NULL填充
  • 当条件放在where后面, 后面的条件视为查询条件, 是在两表做连接之后, 再进行查询过滤的条件, 如果不满足, 则过滤掉, 所以查询的结果是空

故这道题的最终答案为

select g.id gid, g.name gname, c.id cid, c.name cname from sh_goods g right join sh_goods_category c on g.category_id = c.id where c.id = 10 or c.id = 11;
上一篇:FT实现逆地理编码&报错处理


下一篇:Django 数据库建表的时候 No migrations to apply原因出现和解决