一、题目
表:Products
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| product_id | int |
| low_fats | enum |
| recyclable | enum |
+-------------+---------+
product_id 是这个表的主键。 low_fats 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品是低脂产品,'N' 表示不是低脂产品。 recyclable 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品可回收,而 'N' 表示不可回收。
写出 SQL 语句,查找既是低脂又是可回收的产品编号。
返回结果 无顺序要求 。
查询结果格式如下例所示:
Products 表:
+-------------+----------+------------+
| product_id | low_fats | recyclable |
+-------------+----------+------------+
| 0 | Y | N |
| 1 | Y | Y |
| 2 | N | Y |
| 3 | Y | Y |
| 4 | N | N |
+-------------+----------+------------+
Result 表:
+-------------+
| product_id |
+-------------+
| 1 |
| 3 |
+-------------+
只有产品 id 为 1 和 3 的产品,既是低脂又是可回收的产品。
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路解析
创建数库表
这里要注意low_fats和recyclable的数据类型是enum型。
enum:
- enum是一个字符串对象
- 枚举值必须是带引号的字符串文字
CREATE TABLE products(
product_id INT PRIMARY KEY AUTO_INCREMENT,
low_fats ENUM("Y","N"),
recyclable ENUM("Y","N")
);
id的取值
- 当设置是id为自增时,id的是从1开始计算,因此就算你插入数据是id=0,你的数据id也会是1,同时自增也会帮你排序。
- 设置自增id后,如果想修改id为0,可以通过update来修改id=0
- 不设置自增,则可以取值为0
插入数据
INSERT INTO products VALUES (NULL, "Y", "N"),
(NULL, "Y", "Y"),
(NULL, "N", "Y"),
(NULL, "Y", "Y"),
(NULL, "N", "N");
这里mysql数据路创建的自增id是从1开始的,因此看到的是1到5。
创建成功,展示数据表格
and语法
这里使用and处理同时满足两个两件的情况,既是低脂又是可回收的产品。
SELECT product_id, low_fats, recyclable FROM products WHERE low_fats = "Y" AND recyclable = "Y";
三、执行结果
四、总结
本题的这个用and处理逻辑没有深难度,有意思的一个点在于这个设置主键id的自增
- 设置自增是id,插入数据id不能为0,而且它会自动排序,
- 如果想要设置id=0,则需要通过update 表名 set id=0 where 条件
- 或者不设置自增
以上是所有内容,如有不对之处,望留言之处,谢谢!!!