首页 > 解决方案 > 如何在 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 语句,但是有没有办法可以实现这一点?

标签: mysqlstored-procedures

解决方案


推荐阅读