首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL中选择所有内容时,我是否可以重命名特定字段,同时仍然使用*键选择其他所有内容

从MySQL中选择所有内容时,我是否可以重命名特定字段,同时仍然使用*键选择其他所有内容
EN

Stack Overflow用户
提问于 2011-05-20 07:50:30
回答 4查看 6.7K关注 0票数 8

嘿又来了伙计们。因此,我正在尝试了解如何在mysql数据库中的多个表中选择每个字段,并将结果表输出到.csv文件中。我已经找到了处理.csv输出的臭名昭著的stackoverflow问题,并将所有代码放在那里。所以,我想我要问的是:

有没有一种方法可以执行类似这样的mysql查询?

代码语言:javascript
复制
SELECT * prof.id AS youth_id FROM time time, profiles prof, WHERE foo='bar'

并让它从两个(或类似4个)表中选择所有内容,但选择id作为youth_id,或者如果我需要选择某些值作为另一个名称,我是否必须指定我想要的每个值?

我希望不必指定每个字段,因为我希望50+输出。

我试着去找,但是找不到我需要的东西。我想如果你能给我指出正确的方向那就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-20 07:58:24

您不必指定每个字段。相反,您可以执行以下操作:

代码语言:javascript
复制
SELECT *, prof.id AS youth_id FROM time time, profiles prof

但是,上面的代码将返回两个表中的所有列以及您重命名的列。因此,如果原来的两个表总共有4列,而您重命名了一个表,那么结果集中将会有5列。

票数 13
EN

Stack Overflow用户

发布于 2011-05-20 07:56:56

莱恩你可以做你想做的事。唯一需要注意的是,结果将同时包含youth_id和id,它们的值都相同。如果你只想要youth_id &而不是id,那么你必须列出你想要的所有列,而不是使用'*‘。顺便说一句,如果您手头有phpmyadmin,那么只需输入sql就可以立即看到结果。

票数 0
EN

Stack Overflow用户

发布于 2011-05-21 10:09:40

因为似乎没有其他完美的解决方案,所以我将跳出框框思考一下。如果你不介意打两个电话的话。一种是到表模式(存储列名的地方),然后您可以根据需要通过编程方式更改名称(无需全部键入)。之后,使用内爆的数组作为其选择部分进行第二次调用。

举个例子:

代码语言:javascript
复制
<?php
$tables = array ('table1','table2','table3');
$NameAliases = array('table1.id'=>'profid');

foreach ($tables as $table)
{
    $sql = "SHOW COLUMNS FROM $table;";
    $result = mysql_query($sql);

    $columns = array();

    while ($row = mysql_fetch_array($result))
    {
        $search = array_search($table.'.'.$row["Field"],$NameAliases);
        if ($search === true)
        {
            $parts = explode('.',$NameAliases[$search]);
            $columns[] = "$table.{$row["Field"]} AS {$parts[1]}"; //get the side of the dot
        }
        else
        {
            $columns[] = "$table.{$row["Field"]}";
        }
    }
}
$columnstring = implode(', ',$columns);
$sql = "SELECT $columnstring FROM ".implode(', ',$tables)." WHERE 1=1";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
{

}
?>

(不知道上面的方法是否有效)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6066097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档