【问题标题】:FETCH_ASSOC and SELECT * FROM two tables with the same column nameFETCH_ASSOC 和 SELECT * FROM 两个具有相同列名的表
【发布时间】:2011-03-07 08:16:11
【问题描述】:

我有很多具有相同列名的 MySQL 表。所以我正在寻找 SELECT * FROM more tables 的 PDO 或 SQL hack - 这将在结果集中返回表名。

例子:

'SELECT * FROM table0, table1';

两个表都有“名称”列。但是 FETCH_ASSOC 结果只返回一个“名称”——最后一个。

结果:

echo $result["name"];

想要的结果:

echo $result["table0.name"];
echo $result["table1.name"];
...

注意

  1. 我无法将数据库列重命名为唯一
  2. 我无法为每列(很多表/列)手动创建别名
  3. 我希望结果集中的名称而不是像 FETCH_NUM 这样的数字

有什么想法吗? 谢谢!

【问题讨论】:

  • 执行两个查询,每个单独的表一个到底有什么问题?

标签: mysql wildcard resultset


【解决方案1】:

Hack 不存在,你必须创建别名。

【讨论】:

    【解决方案2】:

    您说您不想为所有列加上别名,因为它们太多了,但您是否考虑过只为给您带来问题的列加上别名?

    SELECT
        *, 
        table0.name AS t0name,
        table1.name AS t1name
    FROM table0 JOIN table1 ON ...
    

    【讨论】:

    • 感谢您的部分建议。我找到了另一个。 FETCH_NAMED 将有问题的列作为编号数组返回,其他作为普通标量返回。 [unique] => val [name] => Array( [0] => val [1] => val ) 一种方法是使用 php 格式化结果集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2012-05-26
    • 1970-01-01
    • 2019-04-23
    • 2016-09-04
    相关资源
    最近更新 更多