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


How to get value from one table column when two columns of the same name exist in an sql join

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

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

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

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

如果不是这样的话,我还能做什么呢?谢谢

您应该通过为查询中的两列中的一列或两列使用别名来区分具有相同名称的两列,如以下

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;

我更多地沿着这个(虚构的)伪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中,每个表都用一个唯一的别名引用。同一个查询中不能有两列具有相同的名称,否则会出现错误,因此需要给它们一个别名。这些表在这段代码中也有别名——在我看来,这确实有助于简化事情。。。无论如何,只是一个简单的例子来说明你如何处理这个问题-其他人可能有不同的方法,我可能会从中学习新的技巧