0

我在 mysll 数据库中有 2 个表。这两个表都有很少的固定列和很少的动态列(字段/模式)。我想用以下查询加入这两个表:

SELECT *
FROM `cd` cd
LEFT JOIN cd_n cn ON cd.id = cn.fk_cd

我想结果为

CD_Column1   CD_Column1   CD_Column3   ...... CN_Column1   CN_Column2   CN_Column3  .....
value        value        value        ...... value        value        value       ...       
value        value        value        ...... value        value        value       ...       

其中.....是两个表的动态列名。所以情况是我不知道列名,因为它们是动态的,我想在查询级别重命名(别名)它。请让我知道我该怎么做?

4

1 回答 1

1

您需要查询information_schema以获取这两个表的列名。假设您将cd列名存储在数组中$cd_columns,列名存储在cd_n数组中$cdn_columns

然后在 PHP 中通过列数组创建查询循环并执行以下操作:

$sql = 'SELECT ';

// add the cd columns
$i = 0;
foreach($cd_columns as $col) {
    $sql .= "{$col} AS CD_Column{$i},";
    $i++;
}

// add the cd_n columns
$i = 0;
foreach($cdn_columns as $col) {
    $sql .= "{$col} AS CN_Column{$i},";
    $i++;
}

// remove the trailing comma
$sql = trim($sql, ',');
// continue the SQL
$sql .= ' FROM ...';

这个有帮助吗?

于 2012-06-01T12:10:51.380 回答