leet codeのSQL問題を1日1題解く【1378. Replace Employee ID With The Unique Identifier】
目次
初めに
今日もSQLの問題を解いて行きます。
問題
セットアップ
以下のSQL文をローカル環境で実行します。
Create table If Not Exists Employees (id int, name varchar(20)); Create table If Not Exists EmployeeUNI (id int, unique_id int); Truncate table Employees; insert into Employees (id, name) values ('1', 'Alice'); insert into Employees (id, name) values ('7', 'Bob'); insert into Employees (id, name) values ('11', 'Meir'); insert into Employees (id, name) values ('90', 'Winston'); insert into Employees (id, name) values ('3', 'Jonathan'); Truncate table EmployeeUNI; insert into EmployeeUNI (id, unique_id) values ('3', '1'); insert into EmployeeUNI (id, unique_id) values ('11', '2'); insert into EmployeeUNI (id, unique_id) values ('90', '3');
知らなかった or 理解があやふやな知識
結合について
結合に関しては、以下の記事でまとめています。
解答
以下のSQL文を実行することで、画像のような結果を取得できます。
SELECT * FROM Employees LEFT OUTER JOIN EmployeeUNI ON Employees.id = EmployeeUNI.id
左外部結合を使っているので、メインで指定したテーブルの内容は全て表示して、結合条件に一致するようなレコードが結合先のテーブルに存在しない場合、NULLが入ったレコードが結合されます。そのことが実行結果から確認できました。
以下のSQL文を実行したら、無事クリアできました。
SELECT UNI.unique_id, E.name FROM Employees AS E LEFT OUTER JOIN EmployeeUNI AS UNI ON E.id = UNI.id
終わり
明日もやります!