Select 或 Return "field" 名称来自 MySQL 中的查询(不是 table)

Select or Return "field" names from a query (not table) in MySQL

我在 MySQL 中有一个 Dynamic Pivot(参见这个问题:

我想知道 Column/As/Field 的名字,就好像它是 table 一样,我查询了 INFORMATION_SCHEMA(如果这是一个真实的 table,就很容易了够了:MySQL query to get column names?).

但是,我找不到任何问题或对函数或 SELECT 选项的引用来从查询中获取 Column/As/Field 名称。这可能吗?如果是,怎么做?

使用 Perl 访问 MySQL (http://dbi.perl.org/)。

因此,翻转一下...我们知道固定列。因此,如果我们使用创建 Pivot 的相同基本查询开始,我们可以获得 GROUP_CONCAT 个名称。

SET @sql = NULL;

SELECT GROUP_CONCAT(qrv.req_name) INTO @sql
    FROM (SELECT qrt.req_name FROM qual_requirment_values qrv JOIN qual_requirment_types qrt ON qrt.id = qrv.req_type_id) qrv;

SET @sql = CONCAT('r.rank,r.member_type,im.name,qrv.grouping,', @sql);

SELECT @sql;

然后可以拆分成数组使用。

似乎还有很长的路要走,但在没有其他东西的情况下它适用于我的应用程序。看起来非常低效! :)

更好的答案,感谢@OllieJones。用于访问的数据库接口 MySQL 应该提供一种方法。

就我而言 (Perl),答案在这里:http://www.perlmonks.org/?node_id=264623

my $sql = ... [some query];
my $sth = $dbh->prepare($sql);
$sth->execute();
my $field_name_arrayref = $sth->{NAME};

除了答案之外,这是我的 MySQL 包中的完整方法。 do() 是我们在 AoA 中 returns 查询的通用 DBI 方法。调整该方法以创建 do_fieldNames();

## Tested Method
sub do_fieldNames {
    my ($self, $sql, $has_results) = @_;
    my ($sth, $rv, @row, @query_results);

    ## Execute the SQL statement
    $sth = $$self->prepare($sql);
    $rv = $sth->execute or &error(3306, __LINE__, __FILE__, $sql, $$self->errstr);
    return undef unless $rv > 0;

    ## SOLUTION >> Field Name arrayref, part of the standard included DBI Perl Module
    my $field_name_arrayref = $sth->{NAME};

    ## Parse the results
    if ($has_results || $sql =~ /^select/i) { 
        while (@row = $sth->fetchrow_array) {
            push @query_results, [ @row ];      
        }
    }

    ## Return results
    return (\@query_results, $field_name_arrayref) ;

}