【问题标题】:Issue with join and 2 exact column names连接问题和 2 个确切的列名
【发布时间】:2010-08-31 17:56:52
【问题描述】:

以前从来没有遇到过这种情况...

SELECT ".TBL_USERS.".username, 
       ".TBL_USERS.".id,  <-----------|
       ".TBL_COMMENTS.".creator,      |
       ".TBL_COMMENTS.".comment,      |- same column name
       ".TBL_COMMENTS.".date,         |
       ".TBL_COMMENTS.".id  <---------|

如您所见,我选择了两个 id 列...当我在 PHP 中使用它们时:

$userid = $row['id'];

我怎样才能知道哪个是哪个?

【问题讨论】:

    标签: php sql mysql


    【解决方案1】:

    您需要使用列别名,带有AS 关键字:

    示例:

    (id) AS id1.........(id) AS id2
    

    现在从您的查询结果中,您可以像这样得到它们:

    $userid1 = $row['id1'];
    $userid2 = $row['id2'];
    

    更多信息:

    http://dev.mysql.com/doc/refman/5.0/en/select.html

    【讨论】:

      【解决方案2】:

      这就是为什么 ID 不适合作为 ID 列的原因之一。您必须为列名起别名才能知道哪个是哪个。

      【讨论】:

      • 呵呵——我在读“ID”时想到了“智能设计”……=)
      【解决方案3】:

      使用AS 重命名表中的ID 列之一。

      【讨论】:

        【解决方案4】:

        记住……mysql不需要“AS”,你可以……

        SELECT ".TBL_USERS.".username, 
               ".TBL_USERS.".id id1,  <-----------|
               ".TBL_COMMENTS.".creator,      |
               ".TBL_COMMENTS.".comment,      |- same column name
               ".TBL_COMMENTS.".date,         |
               ".TBL_COMMENTS.".id id2 <----------|
        

        【讨论】:

        • 谢谢你,对于其他类型的 SQL 是需要的吗?
        • 我不确定其他类型的SQL是否需要“AS”,如果有人能帮助我们就好了。
        【解决方案5】:
        猜你喜欢
        • 2010-11-12
        • 2021-12-21
        • 1970-01-01
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 2021-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多