如何使用 SQL 查询连接两个表? [复制]

Posted

技术标签:

【中文标题】如何使用 SQL 查询连接两个表? [复制]【英文标题】:How am I able to JOIN two tables with SQL query? [duplicate] 【发布时间】:2016-01-12 22:51:47 【问题描述】:

所以我目前的查询是这样的

"SELECT * FROM articles 
WHERE id = :id "

但是我想知道如何将文章表连接到另一个名为 users 的表中。

我想这样做,以便我能够使用每个文章行的 author_id 来获取作者的用户名,使用 article.author 来找到与作者 ID 与 users.id 匹配的用户名。

【问题讨论】:

PDO 是连接方式,因此与您的问题无关。您将使用JOINs 连接您的表。 我知道 PDO 是驱动程序,但是我不确定如何正确使用 JOIN,因为我以前从未使用过它们。 我在上面的评论中为您链接了文档。从那里开始,尝试一下,然后当您遇到具体问题时,请联系我们,我们会尽力提供帮助。 加入相当先进,比如第 2 天 :) 那么这是否正确?选择 * FROM 文章 LEFT JOIN users ON article.author = users.id WHERE items.id = :id 【参考方案1】:

除了您编写的查询之外,您可以按照以下方式编写一些内容:

select a.*, u.username
from articles a
left join users u on u.user_id = a.author_id
where u.user_id = :id

始终确保通过客户端(命令行、phpMyAdmin、HeidiSQL、Workbench 或您喜欢的任何其他方式)运行查询,根据需要对其进行改进,然后将其放入 PDO 的 SQL 语句中。

【讨论】:

别忘了始终尊重您的别名 谢谢,inner join和left on join有什么区别?我上面的评论会像这个一样有效吗? @Pepzter9 在这种情况下,LEFT 可能更好;如果文章没有作者,此查询将不返回任何内容,但您的仍会返回书籍字段。 Pepzter9 - this question 很好地解释了连接。就像@Uueerdo 提到的那样,如果您想要文章,即使您在用户中找不到匹配项,左连接可能会更好。如果您只想在用户表中有匹配项的情况下获取文章,请使用内连接。 select * from Articles a left join users u on u.id = a.author where a.id = :id 以上给了我正确的结果,但是它从 users 表中选择 *,怎么样我只能从用户中选择用户名,从文章中选择 *?

以上是关于如何使用 SQL 查询连接两个表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql如何将一个表与另外一张表相关联

如何连接具有不同 GROUP BY 级别的两个查询,使一些记录为空

在 MySQL 中,如何编写 SQL 来连接两个表而不是一个子查询?

sql中如何使一列中的多个重复数据只显示第一条

如何在sql中交叉连接两个表

SQL如何查询两个表连接明细表结果用分隔符分开?