当sql连接中存在两个同名的列时,如何从一个表列获取值

时间:2016-01-01 23:35:58

标签: php mysql join

我目前面临的问题是当我使用相同名称的列连接两个表时尝试获取值,例如:table1.date和table2.date(每个表中的日期不同)我如何获得"日期"在这种情况下,表1。 我目前正在运行

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

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

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

如果不是,我怎么能够做到这一点? 感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分: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中,每个表都使用唯一的别名引用。您不能在同一个查询中使用相同名称的两列,否则您将收到错误,因此您可以为它们提供别名。这些表在这段代码中也有别名 - 在我看来它真的有助于简化事情......无论如何,只是一个简单的例子来说明你如何处理这个问题 - 其他人可能采用不同的方法从中学习新的技巧