高频SQL 50题:查询

发布时间 2023-11-17 06:11:53作者: Offer多多

1757. 可回收且低脂的产品

SELECT product_id
FROM Products
WHERE low_fats = 'Y' AND recyclable = 'Y';

 

584. 寻找用户推荐人

在做题的时候,我直接使用'!='进行判断,结果只能返回一个‘Zack’,和我们预知的并不相符。MySQL使用三值逻辑--TRUE,FALSE,UNKOWN。与传统的两值逻辑不同,在三值逻辑中,与NULL值进行比较时,结果会变成UNKNOWN。这是因为NULL表示缺失或者未知的值,因此与其他任何值包括其自身比较时都会产生未知的结果。因此在实际使用时,需要使用‘IS NULL’和‘IS NOT NULL’操作符。

SELECT name
FROM Customer
WHERE referee_id != '2' OR referee_id IS NULL;

 

595. 大的国家

SELECT name, population, area
FROM World
WHERE area >= 3000000 OR population >= 25000000;

 

1148. 文章浏览 I

SELECT DISTINCT author_id AS id
FROM Views
WHERE author_id = viewer_id
ORDER BY id;

注意:

1. 使用DISTINCT关键字来检索唯一元素;

2. 使用ORDER BY进行排序。

 

1683. 无效的推文

SELECT tweet_id
FROM tweets
WHERE CHAR_LENGTH(content) > 15;

注意:

1. 对于SQL,计算字符串中字符数的最佳函数是CHAR_LENGTH(str),返回str的长度;

2. 另一个常用的函数是LENGTH(str),因为content列只包含英文字符,没有特殊字符。否则,LENGTH()可能会返回不同的结果,因为该函数返回字符串的字节数,某些字符包含多于一个字节。以‘¥’为例,CHAR_LENGTH()返回结果为1,而LENGTH()返回结果为2,因为该字符串包含2个字节。ASCII中,一个英文字母(不区分大小写)为一个字节,一个中文汉字为两个字节。