【问题标题】:MySQL INNER JOIN with different column namesMySQL INNER JOIN 具有不同的列名
【发布时间】:2014-12-23 01:30:09
【问题描述】:

好的,我有两张桌子,一张news 桌子和一张users 桌子。它们的设置如下:

新闻:

id title user_id contents

用户:

id username password

当我运行这个查询时:

SELECT news.title, users.username, news.contents FROM news INNER JOIN users ON news.user_id=users.id  WHERE news.id=:id

我只能使用 $query['id'] 访问用户 ID。因此,连接似乎使用了 table2 中的列名,尽管我希望他们将其映射到 table1 的列名。因此,即使该列在 users 表中称为 id,我也想在 user_id 下访问它,因为我在 JOIN 查询中指定了它。

我需要这个,因为如果我需要 table1 中的 id,它们都将映射到名为 id 的列,而我只能获取 users 表的 id

那么有没有办法做到这一点?访问table1中列名下的table2中的列?

【问题讨论】:

  • SELECT table2.whatever AS name_you_want?
  • @Marc B 所以这意味着我需要使用它,对吧?:SELECT news.title, users.id AS user_id, users.username, news.contents FROM news INNER JOIN users ON news.user_id=users.id WHERE news.id=:id

标签: php mysql pdo inner-join


【解决方案1】:

在 MySQL 中,您在 select 语句中指定的内容就是在结果集中调用的内容,因此您需要告诉它要给您什么。你可以使用AS command

SELECT users.id AS user_id ... FROM ...

这样你就可以随便叫它了

或者使用

从新闻中获取 user_id
SELECT news.user_id ... FROM ...

【讨论】:

    【解决方案2】:
    SELECT users.id AS id1, news.id AS id2, news.title, users.username, news.contents 
    FROM news INNER JOIN users ON news.user_id=users.id  WHERE news.id=:id
    
    echo $query['id1'] . $query['id2'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2015-04-28
      • 2012-09-10
      • 2023-03-17
      相关资源
      最近更新 更多