1

我正在使用 MySQL 数据库,需要在决定运行哪些查询之前检查一行是否已经存在。

我正在处理的表是这样的:

player(playerid, nickname, data1, data2, data3)

其中“playerid”是一个自动递增的数字,“nickname”是唯一的。

我尝试了一些使用 COUNT、COALESCE、fetch->rows 等的查询,但一无所获。我已经看到了这个问题,但无法解决任何问题。

4

2 回答 2

7

您能否发布SELECT COUNT(*)无效的具体查询,问题是什么?

查询应该以这个答案为模型:我如何知道 Perl DBI 查询返回多少行?

假设您的“行已经存在”定义是“具有给定昵称的玩家在那里”,查询将是:

my $th = $dbh->prepare(qq{SELECT COUNT(1) FROM player WHERE nickname='$nickname'});
$th->execute();
if ($th->fetch()->[0]) {
    ....
} # Code stolen shamelessly from the link above
于 2010-11-14T17:56:55.423 回答
0

您可以使用一些 dbh/sth 方法来检查结果集是否为空:

my $stmt = 'SELECT playerid FROM player WHERE playerid = ?';

if ($dbh->selectrow_array($stmt, undef, $id)) {
    print "The row exists";
}
于 2010-11-14T18:01:03.750 回答