选择查询问题

发布于 2024-08-20 01:16:09 字数 806 浏览 9 评论 0 原文

我在 mysql 数据库中有一个表,其中包含字段

“name”、“title”、“cd_id”、“tracks”

条目如下所示:

Schubert | Symphonie Nr 7 | 27 | 2
Brahms | Symphonie Nr 1 | 11 | 4
Brahms | Symphonie Nr 2 | 27 | 4
Shostakovich | Jazz Suite Nr 1 | 19 | 3

要获取每张 cd (cd_id) 的曲目,我编写了以下脚本:

#!/usr/bin/env perl
use warnings; use strict;
use DBI;

my $dbh = DBI->connect( 
    "DBI:mysql:database=my_db;", 
    'user', 'passwd', { RaiseError => 1 } );

my $select_query = "SELECT cd_id, tracks FROM my_table";

my $sth = $dbh->prepare( $select_query );
$sth->execute;

my %hash;
while ( my $row = $sth->fetchrow_hashref ) {
    $hash{"$row->{cd_id}"} += $row->{tracks};
}

print "$_ : $hash{$_}\n" for sort { $a <=> $b } keys %hash;

是吗?可以通过适当的选择查询直接获得这些结果吗?

I have a table in a mysql-database with the fields

"name", "title", "cd_id", "tracks"

The entries look like this:

Schubert | Symphonie Nr 7 | 27 | 2
Brahms | Symphonie Nr 1 | 11 | 4
Brahms | Symphonie Nr 2 | 27 | 4
Shostakovich | Jazz Suite Nr 1 | 19 | 3

To get the tracks per cd (cd_id) I have written this script:

#!/usr/bin/env perl
use warnings; use strict;
use DBI;

my $dbh = DBI->connect( 
    "DBI:mysql:database=my_db;", 
    'user', 'passwd', { RaiseError => 1 } );

my $select_query = "SELECT cd_id, tracks FROM my_table";

my $sth = $dbh->prepare( $select_query );
$sth->execute;

my %hash;
while ( my $row = $sth->fetchrow_hashref ) {
    $hash{"$row->{cd_id}"} += $row->{tracks};
}

print "$_ : $hash{$_}\n" for sort { $a <=> $b } keys %hash;

Is it possible to get these results directly with an appropriate select query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千柳 2024-08-27 01:16:09
"SELECT cd_id, SUM(tracks) as tracks FROM my_table GROUP BY cd_id"

编辑:请参阅此处以获取更多信息以及您可以使用 GROUP BY 执行的其他操作: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

"SELECT cd_id, SUM(tracks) as tracks FROM my_table GROUP BY cd_id"

edit: see here for further information and other things you can do with GROUP BY: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

泪眸﹌ 2024-08-27 01:16:09

使用聚合函数

  SELECT `cd_id`, SUM(`tracks`) AS s
    FROM `your_table`
GROUP BY `cd_id`

Use an aggregate function

  SELECT `cd_id`, SUM(`tracks`) AS s
    FROM `your_table`
GROUP BY `cd_id`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文