我有此FF表称为设备 SELECT CASE:使用基于恒定值
+----------+----------+-----------+-------------+----------+---------+
| equip_id | chara_id | weapon_id | headgear_id | armor_id | ring_id |
+----------+----------+-----------+-------------+----------+---------+
| 3 | 1 | 3 | 5 | 9 | 8 |
| 5 | 3 | 3 | 5 | 3 | 8 |
| 6 | 4 | 7 | 5 | 3 | 8 |
| 7 | 5 | 4 | 5 | 3 | 8 |
| 8 | 6 | 3 | 5 | 2 | 8 |
| 10 | 8 | 3 | 5 | 2 | 8 |
+----------+----------+-----------+-------------+----------+---------+
,我有这么长的case语句:
switch ($equip->item_type) {
case '1':
# Weapon
$sql_equip = "UPDATE equipment SET weapon_id = :item_id WHERE chara_id = :chara_id";
break;
case '2':
# Armor
$sql_equip = "UPDATE equipment SET armor_id = :item_id WHERE chara_id = :chara_id";
break;
case '3':
# Ring
$sql_equip = "UPDATE equipment SET ring_id = :item_id WHERE chara_id = :chara_id";
break;
case '4':
# Headgear
$sql_equip = "UPDATE equipment SET headgear_id = :item_id WHERE chara_id = :chara_id";
break;
default:
# do nothing...
break;
}
我在网上看到一些查询你可以在你的查询中使用case语句,我搜索了网络,我似乎找不到一个正确的使用。
我希望它在1语句中,因为我将它包装在一个事务函数中,并且还会添加另一行mysql语句。所以,而不是做4x2(当前)我只会做2(如果这可以在1查询中完成)mysql查询。
@PeterLang它已经标准化。 – 2013-05-03 09:17:58
你应该考虑改变你的表模型。既然你已经使用item_type和item_id,为什么不用这种风格创建你的表呢?当你的当前模型强制你改变表和代码,每当一个新的项目类型(鞋,第二个武器,第二环)被添加... – 2013-05-03 09:22:40
@YourCommonSense:好的,改变了我的评论。 – 2013-05-03 09:23:13