leet codeのSQL問題を1日1題解く【584. Find Customer Referee】
目次
初めに
今日もSQLの問題を解いて行きます。
問題
セットアップ
以下のSQL文をローカル環境で実行します。
Create table If Not Exists Customer (id int, name varchar(25), referee_id int); Truncate table Customer; insert into Customer (id, name, referee_id) values ('1', 'Will', NULL); insert into Customer (id, name, referee_id) values ('2', 'Jane', NULL); insert into Customer (id, name, referee_id) values ('3', 'Alex', '2'); insert into Customer (id, name, referee_id) values ('4', 'Bill', NULL); insert into Customer (id, name, referee_id) values ('5', 'Zack', '1'); insert into Customer (id, name, referee_id) values ('6', 'Mark', '2');
知らなかった or 理解があやふやな知識
デフォルトでは、カラムはNULL値を保持することができる
カラムはデフォルトでは、NULL値を保持することができます。 そのため、Integerカラムと言いつつも、NULL値を保持することができます。もし、NULLを許容したくないなら、NOT NULL制約をカラムに適用させます。
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Age int );
SQLでnot equalな条件文を作りたいなら、!= or <>のどちらかの比較演算子を使う
SQLでnot equalな条件文を作りたい場合、!=
or <>
のどちらかの比較演算子を使います。
SQL文で、NULLかどうかを判定したいなら、IS NULLを使う
NULLかどうかを判定したいならIS NULL
、NULLではないを判定したいなら、IS NOT NULL
を使います。
解答
以下のSQL文を実行したら、無事クリアできました。
SELECT name FROM Customer WHERE referee_id != 2 OR referee_id IS NULL
終わり
明日もやります!