teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

調整

2018/10/11 02:08

投稿

yambejp
yambejp

スコア117944

answer CHANGED
@@ -22,4 +22,18 @@
22
22
  select case user_id in (select id from user_tbl where username in ('A', 'D', 'E', 'X', 'Y'))
23
23
  when 1 then loginname else 'notfound' end as login_name
24
24
  from login_tbl;
25
- ```
25
+ ```
26
+
27
+ # 調整版
28
+ 上記データに対してこう
29
+
30
+ ```SQL
31
+ create temporary table tmp_tbl(username varchar(10));
32
+ insert into tmp_tbl values('A'),('D'),('E'),('X'),('Y');
33
+ select coalesce(loginname,'notfound') as loginname from tmp_tbl as t1
34
+ left join user_tbl as t2 on t1.username=t2.username
35
+ left join login_tbl as t3 on t2.id=t3.user_id
36
+ ;
37
+ ```
38
+ つまりX,Yのような存在しないデータに対する処理はできないので
39
+ 都度テンポラリテーブルで存在するデータにするということ。