【问题标题】:How to LEFT JOIN two tables with the same column name如何 LEFT JOIN 两个具有相同列名的表
【发布时间】:2011-11-14 09:28:55
【问题描述】:

我想 LEFT JOIN 两个具有相同列名的表。我有两个要加入的表,但我不断收到错误消息:

column 'id' is ambiguous

在我的 JSON 输出中返回。

我当前的查询:

$sQuery = "
 SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
 FROM   $sTable
 LEFT JOIN
    $sTable2
    ON ($sTable2.id = $sTable.id)

 $sWhere
 $sOrder
 $sLimit
";

产生该错误。当每张表的列名相同时,如何将这两张表作为连接点进行连接?

【问题讨论】:

    标签: mysql left-join


    【解决方案1】:

    明确说明该列属于哪个表。这也适用于查询的 SELECT 部分:

    SELECT table1.column AS column1, table2.column AS column2
    FROM table1
    LEFT JOIN table2
    ON table1.column = table2.column
    

    为了节省一些打字时间,请使用表格别名:

    SELECT t1.column AS column1, t2.column AS column2
    FROM table1 AS t1
    LEFT JOIN table2 AS t2
    ON t1.column = t2.column
    

    【讨论】:

    • 谢谢...简单得令人沮丧。 :-) 我已经接受了你的回答,因为我觉得它是最完整的。
    【解决方案2】:

    歧义可能在选择中,而不是在连接中。连接看起来不错。 $aColumns 可能包含没有表名规范或其他内容的“id”。

    【讨论】:

      【解决方案3】:
      The LEFT JOIN keyword returns all rows from the left table (table_name1), 
      even if there are no matches in the right table (table_name2).
      

      在您的情况下,表 1 和表 2 都是相同的。因此,进行左连接可能没有任何好处,因为最终将返回所有行。您可能想使用内部联接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多