Борланд совершенно прав, синтаксис такой же.
Если вариантов ответов у вас больше то имеет смысл завести отдельную табличку. Вот пример:
PHP код:
//--Основная таблица
mysql> CREATE TABLE `tst`.`my_tbl1` (
-> `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-> `my_val` VARCHAR(45) NOT NULL,
-> PRIMARY KEY (`id`)
-> )
-> ENGINE = MyISAM;
Query OK, 0 rows affected (0.11 sec)
//--Закидываем данные
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.17 sec)
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into my_tbl1 (`my_val`) values ('0');
Query OK, 1 row affected (0.00 sec)
mysql> insert into my_tbl1 (`my_val`) values ('0');
Query OK, 1 row affected (0.00 sec)
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.02 sec)
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)
//-- Такие вот у нас в ней данные
mysql> select * from my_tbl1;
+----+--------+
| id | my_val |
+----+--------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 0 |
| 5 | 0 |
| 6 | 1 |
| 7 | 1 |
+----+--------+
7 rows in set (0.00 sec)
//-- Так работает CASE
mysql> select case my_val when '1' then 'Yes' when '0' then 'No' else 'Hz' end as my_field from my_tbl1;
+----------+
| my_field |
+----------+
| Yes |
| Yes |
| Yes |
| No |
| No |
| Yes |
| Yes |
+----------+
7 rows in set (0.00 sec)
//-- А вот дополнителная таблица
mysql> CREATE TABLE `tst`.`ny_tbl2` (
-> `fld_val` INTEGER NOT NULL,
-> `val_name` VARCHAR(45) NOT NULL,
-> PRIMARY KEY (`fld_val`)
-> )
-> ENGINE = MyISAM;
Query OK, 0 rows affected (0.16 sec)
//-- Заполняем её данные
mysql> insert into ny_tbl2 values ('1', 'Yes'),('0','No');
Query OK, 2 rows affected (0.11 sec)
Records: 2 Duplicates: 0 Warnings: 0
//-- Вот они
mysql> select * from ny_tbl2;
+---------+----------+
| fld_val | val_name |
+---------+----------+
| 1 | Yes |
| 0 | No |
+---------+----------+
2 rows in set (0.00 sec)
//-- А вот таким нехитрым запросом можно эти таблицы объеденить
mysql> select t1.id, t2.val_name
-> from my_tbl1 t1
-> left join ny_tbl2 t2 on t2.fld_val = t1.my_val
-> ;
+----+----------+
| id | val_name |
+----+----------+
| 1 | Yes |
| 2 | Yes |
| 3 | Yes |
| 4 | No |
| 5 | No |
| 6 | Yes |
| 7 | Yes |
+----+----------+
7 rows in set (0.11 sec)
mysql> insert into my_tbl1 (`my_val`) values ('3');
Query OK, 1 row affected (0.01 sec)
//-- немного усовершенствуем
mysql> select t1.id, IFNULL(t2.val_name,'Hz') as val_name_x
-> from my_tbl1 t1
-> left join ny_tbl2 t2 on t2.fld_val = t1.my_val
-> ;
+----+------------+
| id | val_name_x |
+----+------------+
| 1 | Yes |
| 2 | Yes |
| 3 | Yes |
| 4 | No |
| 5 | No |
| 6 | Yes |
| 7 | Yes |
| 8 | Hz |
+----+------------+
8 rows in set (0.13 sec)