使用列数据作为键的数组的Perl哈希

时间:2012-09-18 18:49:16

标签: mysql arrays perl hash

我的SQL数据库有三列; KeyTopicValue。有重复的主题具有不同的值。这是一个示例:

 Key    Topic  Value
 -----  -----  -----
 1      Book      20
 2      Toy       10
 3      Toy       30
 4      Pet      100
 5      Book      15
 .      .          .
 .      .          .

使用Perl,如何从列Topic%Topic)创建哈希,该列使用Topic中的每个唯一键作为具有其元素的相应值的数组: @Book = 20, 15, ...@Toy = 10, 30, ...@Pet = 100, ...

2 个答案:

答案 0 :(得分:1)

我认为你想要一个由Topic键入的哈希值,其中值是对具有该主题的值的数组的引用。

my %values_by_topic;
my $sth = $dbh->prepare('SELECT Topic, Value FROM Table');
$sth->execute();
while (my $row = $sth->fetch()) {
   my ($topic, $value) = @$row;
    push @{ $values_by_topic{$topic} }, $value;
}

答案 1 :(得分:0)

mysql方面:

select Topic, group_concat(Value) as Value
from t
group by Topic