mysql - 数据库中的多个查询取决于没有循环的参数

标签 mysql sql perl postgresql

我有一个 PostgreSQL 数据库和一个像这样的 Perl 脚本

sub reassign_minions {
    my $self = shift;
    my @users = $self->get_userids_of_minions();

    my $sth = $self->dbh->prepare(qq{update users set reports_to = ? where userid = ?});
    $sth->execute($self->reports_to, $user);
    $sth->finish;
}

@users 假设包含多个用户 ID(整数)的数组。对于它返回的每个用户 ID,我想用一个变量更新 reports_to 列,但我不确定如何查询多个变量。

如果它只是一个,那会很容易,因为我可以像上面那样将可变参数设置为类似 $userid 的东西。但是由于可以传入的 ID 数量不固定,我不确定该怎么做。

我还被告知有一种方法可以在不使用循环的情况下执行此操作,因为我最初有一个 for 循环。

最佳答案

IN 与占位符一起使用

sub reassign_minions {
    my $self = shift;
    my @users = $self->get_userids_of_minions();

    my $in = join ',', ('?') x @users;
    my $sth = $self->dbh->prepare(qq{update users set reports_to = ? where userid IN ($in)});
    $sth->execute($self->reports_to, @users) or die $self->dbh->errstr;;
    $sth->finish;
}

关于mysql - 数据库中的多个查询取决于没有循环的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066347/

相关文章:

php - 如何在mysql中使用php对表的任何单独行进行只读?

php - 我无法在数组中放入值?

mysql - 5 个表中的复杂选择查询

sql - 我如何在一个 SQL 语句中加入这个查询?

php - mysql group by date(day) 如果在特定日期没有结果则不显示

php - 警告:mysqli::query():空查询

php - 通过表单将隐藏输入值传递到mysql数据库表

perl - 为什么我可以通过将尖括号的结果分配给输入记录分隔符来处理文件?

perl - Cron 没有在 PERL 中执行我的 system() 语句

linux - 运行 shell 脚本(它本身在另一台服务器上运行 shell/命令)的 CGI 不返回输出