【问题标题】:How to get value from one table column when two columns of the same name exist in an sql joinsql连接中存在两列同名时如何从一个表列中获取值
【发布时间】:2016-04-06 07:03:52
【问题描述】:

当我加入两个具有相同名称的列时,我目前面临尝试获取值的问题,例如:table1.date 和 table2.date(每个表中的日期不同)我将如何获得在这种情况下,表 1 的“日期”。 我目前正在跑步

while($row = $mysqliquery->fetch_object()) {

有什么方法可以使用某种形式的语法在以下代码中从表 1 中检索日期

$row->date eg $row->table1.date or something

如果不是,我还能如何做到这一点? 谢谢。

【问题讨论】:

  • 每个都应该有一个别名——或者至少其中一个应该(日期是一个特殊词)
  • so like select from table 1 as t
  • 然后使用 $row->t.date
  • 据我所知,您不能按照您在此处的建议使用表别名引用字段(我从未尝试过诚实)-@RiggsFolly 和我自己的以下答案分配了查询中字段名称的别名 - 从而更改您将在 php 中使用的名称来引用它们

标签: php mysql join


【解决方案1】:

您应该像这样对查询中的两列中的一列或两列使用别名来区分具有相同名称的两列

SELECT a.`date`, b.`date` as b_date
FROM table1 a
    JOIN table2 b ON a.id = b.a_id
WHERE some specific criteria

现在,当您检索 ROW 时,每个 date 都有自己的唯一名称,即

$row->date;
$row->b_date;

【讨论】:

    【解决方案2】:

    我更多地考虑这个(虚构的)伪sql

    select a.`account_id`, a.`date` as 'account_date', u.`date` as 'signup_date'
    from `accounts` a
    left outer join `users` u on u.`uid`=a.`uid`
    

    每个表都有一个名为date 的列,但在 sql 中,它们每个都使用唯一的别名进行引用。您不能在同一个查询中有两个具有相同名称的列,否则您会收到错误,因此您可以给它们一个别名。这些表在这段代码中也有别名 - 在我看来它确实有助于简化事情......无论如何,这只是一个简单的例子来说明你如何处理这个 - 其他人可能有不同的方法,我可能会从中学习新技巧

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      相关资源
      最近更新 更多