Sql 内部连接和如何避免双重步骤
要获得我正在寻找的信息,我必须执行两个步骤。我很确定这是可以避免的。这就是我目前获取所需信息的方式:Sql 内部连接和如何避免双重步骤,sql,sql-server,Sql,Sql Server,要获得我正在寻找的信息,我必须执行两个步骤。我很确定这是可以避免的。这就是我目前获取所需信息的方式: SELECT AppUser.* FROM AppUser WHERE Email='xxx@xxx.com' 这将为我提供用户Id,在本例中为38 之后,我进行第二次查询: SELECT Follower.*, AppUser.* FROM Follower INNER JOIN AppUser ON
SELECT AppUser.*
FROM AppUser WHERE Email='xxx@xxx.com'
这将为我提供用户Id,在本例中为38
之后,我进行第二次查询:
SELECT Follower.*, AppUser.*
FROM Follower INNER JOIN
AppUser ON Follower.ToUserId = AppUser.Id
WHERE FromUserId=38
这就是我想要的结果
这里的问题是:我如何直接获得我需要的信息=不首先获得Id?我的回复不需要Id
我想要的是有一个查询答案搜索与电子邮件直接
非常感谢更改第二个查询的位置:
WHERE AppUser.Email='xxx@xxx.com'
将第二个查询的位置更改为:
WHERE AppUser.Email='xxx@xxx.com'
把where语句放到主查询中怎么样
SELECT Follower.*, AppUser.*
FROM Follower INNER JOIN
AppUser ON Follower.ToUserId = AppUser.Id
WHERE AppUser.Email='xxx@xxx.com'
把where语句放到主查询中怎么样
SELECT Follower.*, AppUser.*
FROM Follower INNER JOIN
AppUser ON Follower.ToUserId = AppUser.Id
WHERE AppUser.Email='xxx@xxx.com'
您可以在
WHERE
子句中引用AppUsers
。您不需要两个查询:
SELECT f.*, au.*
FROM Follower f INNER JOIN
AppUser au
ON f.ToUserId = au.Id
WHERE au.Email = 'xxx@xxx.com';
注意,我引入了表别名作为表名的缩写。这使得查询更易于编写和读取
此外,我建议您在
选择中列出所需的列。如果两个表中的列名称相同,则可能会出现问题。您可以在WHERE
子句中引用AppUsers
。您不需要两个查询:
SELECT f.*, au.*
FROM Follower f INNER JOIN
AppUser au
ON f.ToUserId = au.Id
WHERE au.Email = 'xxx@xxx.com';
注意,我引入了表别名作为表名的缩写。这使得查询更易于编写和读取
此外,我建议您在选择中列出所需的列。如果两个表中的列具有相同的名称,则可能会出现问题。如果只需要跟随表的列,则还可以使用子查询
SELECT *
FROM Follower
WHERE Follower.ToUserId
IN (SELECT Id FROM AppUser WHERE Email='xxx@xxx.com' )
如果您只需要跟随表的列,那么也可以使用子查询
SELECT *
FROM Follower
WHERE Follower.ToUserId
IN (SELECT Id FROM AppUser WHERE Email='xxx@xxx.com' )
您能提供一些示例数据并解释您到底在寻找什么吗?在follower表中,我们管理朋友关系:在本例中,FromUserId 38跟随表ToUserId中的许多用户ID。因此,我们的想法是获取用户38的朋友列表,然后发送ToUserId电子邮件。您可以提供一些示例数据并解释您到底在寻找什么吗?在follower表中,我们管理朋友关系:在本例中,FromUserId 38跟随ToUserId表中的许多用户ID。因此,我们的想法是获得一个用户38的好友列表,然后获得ToUserId电子邮件