mysql - 如何在 mySQL 中实现 if/else 语句?
问题描述
我正在尝试创建一个存储过程,该过程会随着玩家在瓷砖周围移动而更新。目前,存储过程有效并且表格随着玩家的移动而更新,但我想添加多用户功能,如果列中已有值,则不会更新行。
瓷砖ID | 瓷砖播放器 |
---|---|
1 | 无效的 |
2 | 无效的 |
3 | 无效的 |
4 | 播放器1 |
目前我可以像这样移动到另一个图块(从 tileID 4 移动到 tileID 3):
瓷砖ID | 瓷砖播放器 |
---|---|
1 | 无效的 |
2 | 无效的 |
3 | 播放器1 |
4 | 无效的 |
但我想让它在有玩家的情况下不会移动到 tileID 3
瓷砖ID | 瓷砖播放器 |
---|---|
1 | 无效的 |
2 | 无效的 |
3 | 播放器2 |
4 | 播放器1 |
所以,如果 tileID 3 = null ~ 它将更新到 player1
如果 tileID 3= player2 ~ 它不会更新并且 player2 将保持为 tileID 3 而 player1 将保持为 tileID 4
这是我更新位置的存储过程:
create procedure UpdateDataTile()
BEGIN
UPDATE tbl_tile SET tilePlayer = null WHERE tilePlayer = "player1";
UPDATE tbl_tile t
INNER JOIN
tbl_player p
ON t.tileID = p.tileID
SET t.tilePlayer = uname;
END//
delimiter ;
本质上,我想实现一个执行以下操作的语句:
create procedure UpdateDataTile(IN `uname` varchar(100), `tileVal` int)
BEGIN
If {
tbl_tile row 3 (or whatever is +1 or -1 current tilePlayer row) column tilePlayer != null {return}
}
else
DO this{
UPDATE tbl_tile SET tilePlayer = null WHERE tilePlayer = uname;
UPDATE tbl_tile t
INNER JOIN
tbl_player p
ON t.tileID = p.tileID
SET t.tilePlayer = uname;
}
END//
delimiter ;
我知道我不能像在 c# 等中那样使用 if/else 语句,但是有没有办法可以实现这一点?
解决方案
推荐阅读
- json - 来自 json 的 Object.entries 用 svelte 读出
- reactjs - 反应(JEST)测试
- python - 如何在 python-docx 中创建 TextBox?
- ruby-on-rails-5 - 如何在 Rails 视图中使用索引
- html - scroll-snap-type 可以做什么
- reactjs - React-select 默认值没有被 React-i18next 翻译
- hive - 使用 Nifi 调度批量数据插入 Hive
- vba - 如何只自动回复抄送?
- r - MarrangeGrob/ggsave:如何添加带有文本的页面并在页面上组织绘图
- android - 使用 recyclerview 在 Fragment 中滑动错误