我想使用这样的查询

SELECT personId
FROM Person p
Inner Join address a on p.personId=a.personId
WHERE(a.created > GETDATE() -10)

然后,我想使用此数据来过滤此查询
SELECT *
FROM accounts a
WHERE a.person /*is in the results of the previous query */

我怎样才能做到这一点?

最佳答案

这应该可以解决问题(假设您的帐户表中有personId列)。

SELECT *
FROM accounts a
WHERE a.personId in (
                SELECT DISTINCT personId
                FROM Person p
                Inner Join address a on p.personId=a.personId
                WHERE(a.created > DATEADD(d,-10,GETDATE())))

另外,也可以不直接使用3个表,而不必使用子查询:
SELECT
    C.*
FROM
    accounts C
INNER JOIN
    Person P ON P.personId = C.personId
INNER JOIN
    [Address] A ON A.personId = P.PersonId
WHERE
    A.created > DATEADD(d,-10,GETDATE())

关于sql - 使用上一个查询中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8097436/

10-12 20:48