要获取我想要的信息,我总是必须执行两个步骤。我很确定有可能避免这种情况。这就是我目前所需要的信息的方式:
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。
我想让查询答案直接用电子邮件搜索。
非常感谢
答案 0 :(得分:2)
将第二个查询的WHERE更改为:
WHERE AppUser.Email='xxx@xxx.com'
答案 1 :(得分:1)
您将where语句放入主查询怎么样?
SELECT Follower.*, AppUser.*
FROM Follower INNER JOIN
AppUser ON Follower.ToUserId = AppUser.Id
WHERE AppUser.Email='xxx@xxx.com'
答案 2 :(得分:1)
您可以在AppUsers
子句中引用WHERE
。您不需要两个查询:
SELECT f.*, au.*
FROM Follower f INNER JOIN
AppUser au
ON f.ToUserId = au.Id
WHERE au.Email = 'xxx@xxx.com';
请注意,我引入了表别名作为表名的缩写。这使查询更易于编写和阅读。
此外,我建议您在SELECT
中列出所需的列。如果两个表中的列名称相同,则可能会出现问题。
答案 3 :(得分:1)
如果仅需要Follower表的列,则也可以使用子查询。
SELECT *
FROM Follower
WHERE Follower.ToUserId
IN (SELECT Id FROM AppUser WHERE Email='xxx@xxx.com' )