忘れないために備忘録。
MySQLはCASE構文が使えるようになっています。
mysql> SELECT CASE WHEN 1=1 THEN 'true' ELSE 'FALSE' end;となります。
+--------------------------------------------+
| case when 1=1 then 'true' else 'false' end |
+--------------------------------------------+
| true |
+--------------------------------------------+
1 row in set (0.00 sec)
構文は
CASE WHEN <条件式> THEN <真の場合> ELSE <偽の場合> END;です。
応用して、例えば別テーブル(B)に自テーブル(A)を参照しているカラム(a_id)があり、BテーブルがAテーブルを参照しているデータを`refered`として取得する場合は
mysql> SELECTで取得できます。
CASE WHEN a_id>0 THEN 'refered' ELSE 'no refered' END
FROM A INNER JOIN B ON A.id=B.a_id;
さらに拡張して、AテーブルのデータがBテーブルに参照されていた場合に、Aテーブルの`refered`カラムを`refered`、そうでない場合を`no refered`と更新したい場合は
mysql> UPDATE A INNER JOIN B ON A.id=B.a_idのように、MySQLのUPDATE文+JOIN句でできます。
SET refered= CASE WHEN a_id > 0 THEN 'refered' ELSE 'no refered' END;
以上どえす。
0 件のコメント:
コメントを投稿