1757. 可回收且低脂的产品

236 阅读2分钟

一、题目

表: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 为 13 的产品,既是低脂又是可回收的产品。

来源:力扣(LeetCode)

链接:leetcode.cn/problems/re…

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路解析

创建数库表

这里要注意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。

创建成功,展示数据表格 image.png

and语法

这里使用and处理同时满足两个两件的情况,既是低脂又是可回收的产品。

SELECT product_id, low_fats, recyclable FROM products WHERE low_fats = "Y" AND recyclable = "Y"; 

三、执行结果

image.png

四、总结

本题的这个用and处理逻辑没有深难度,有意思的一个点在于这个设置主键id的自增

  • 设置自增是id,插入数据id不能为0,而且它会自动排序,
  • 如果想要设置id=0,则需要通过update 表名 set id=0 where 条件
  • 或者不设置自增

以上是所有内容,如有不对之处,望留言之处,谢谢!!!