我正在尝试通过 Perl 查询 MySQL 数据库。我的数据库有一个表,其主键是 PK1、PK2 和 PK3 三列的组合。我有数组 arr1 和 arr2 分别包含一些 PK1 和 PK2 的值。我想在数据库中为 arr1 和 arr2 的每个可能组合找到对应的 PK3 值(可能有一些组合没有 PK3 的值)。例如:
PK1 PK2 PK3
"JIM" "RED" 1
"JOHN" "BLUE" 2
"ANN" "GREEN" 3
"ANN" "WHITE" 4
"ME" "BLACK" 5
"ME" "RED" 6
arr1 = ("JIM", "ME", "ANN")
arr2 = ("BLACK", "RED")
我应该得到结果:
arr3 = (1, 5, 6)
我能想出的最佳解决方案是:
foreach my $el1 (@arr1) {
$i = 0;
$query = "SELECT PK3 FROM table WHERE PK1 = $el1 AND PK2 = ?;";
foreach my $el2 (@arr2) {
my $query_handle = $connxn->prepare($query);
$query_handle->execute($el2);
$query_handle->bind_columns(undef, \$rec);
while($query_handle->fetch()) {
push(@arr3, $rec);
}
}
}
但这行不通,因为会有 $el1 和 $el2 的组合,没有什么可以绑定的。有没有更好/更快的方法来做到这一点?它是一张大桌子,而且数组也很长,所以我的程序即使没有给我错误也需要时间。我在这里没有想法,所以任何帮助将不胜感激。谢谢!