【问题标题】:MySQL Join help from two tablesMySQL Join 来自两个表的帮助
【发布时间】:2026-01-27 17:10:02
【问题描述】:

我相信 S.O. 上有很多例子。但我什至不知道要搜索什么,因为我在使用数据库方面非常有限,所以我想我会在这里发帖并希望得到一些帮助。

我有两个表,Users 和 Profiles。一封电子邮件可以有多个配置文件,并且用户表中可以有多个配置文件。

我需要编写一个查询,从电子邮件匹配的 Profile 表中选择所有 profileID(例如“test@test.com”。这应该返回一堆配置文件(1、23、444、9203、 034) 但我只想返回用户表中的配置文件ID(和用户名)。(例如,用户表中只有配置文件ID 444。

个人资料表示例:

个人资料ID |主要电子邮件 |姓名 |其他|

用户表:

个人资料ID |用户名 |密码 |其他用户资料|

这可能非常简单,但我需要花费相当多的时间来研究,而且我时间紧迫。

类似(?):

    SELECT t1.profileID, t2.username 
    FROM Profiles as t1 INNER JOIN Users as t2 ON t1.profileID = t2.profileID 
    WHERE t1.primaryEmail="test@test.com"

我是一名前端开发人员,接手的任务比我想象的要多。我已经过了几天的截止日期了。

【问题讨论】:

  • 我们不是来帮你做功课的。向我们展示您的尝试以及遇到的错误,我们可以帮助您调试问题。
  • 感谢您的帮助

标签: mysql sql database join


【解决方案1】:

来自 mysql 文档站点的 sql documentation 应该可以帮助您形成您正在寻找的查询,但是对于一个有效的连接示例来说应该是这样的:

SELECT column1 FROM table1 tableAlias
INNER JOIN table2 table2Alias ON tableAlias.column = table2Alias.column
WHERE tableAlias.column = this AND table2Alias.column = that

注意:您可以使用不止一种连接类型,因此请花点时间阅读文档,并确定哪一种最适合解决您的问题。

【讨论】:

    【解决方案2】:

    你可以写这个查询。

    SELECT Profile.ProfileID, User.username from Profile INNER JOIN User ON Profile.ProfileID = User.ProfileID WHERE Profile.primaryEmail = "test@test.com"
    

    试试看。

    谢谢。

    【讨论】:

      【解决方案3】:
      SELECT ProfileID, Username
        FROM Profile
        JOIN Users USING (ProfileID)
       WHERE primaryEmail = "test@test.com"
      

      它将显示两个表中存在相同profileID的数据

      【讨论】: