MySQLのIF文

MySQLでもIF文が使えるのは知ってたけどいろいろいじってみた

とりあえず変数設定


mysql> SET @a=1;
Query OK, 0 rows affected (0.00 sec)

でこんなIF文を実行してみる


mysql> SELECT IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) );

                                                                                                    • +
IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) )
                                                                                                    • +
3
                                                                                                    • +

1 row in set (0.00 sec)


mysql> SET @a:=@a+1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) );

                                                                                                    • +
IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) )
                                                                                                    • +
1
                                                                                                    • +

1 row in set (0.00 sec)


mysql> SET @a:=@a+1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) );

                                                                                                    • +
IF( (SELECT @a)=2, 1, IF((SELECT @a)=3, 2, 3) )
                                                                                                    • +
2
                                                                                                    • +

1 row in set (0.00 sec)


上のSQLPHPで書いてみると


$a = 1;
function aa($a) {
if ($a == 2) {
return 1;
} else if ($a == 3) {
return 2;
} else {
return 3;
}
}
print aa($a);
$a++;
print aa($a);
$a++;
print aa($a);

こんな感じ