使用SQL查找最初为X且稍后更改为Y

时间:2016-02-12 15:07:12

标签: sql-server

我最近开始使用SQL工作而且没有太多经验,所以如果这是一个荒谬的问题,我很抱歉。 我正在寻找一个最初被列为X但后来改为Y的条目,我认为嵌套的子查询是要走的路,但是我尝试的那个看起来并不像使用嵌套位。 这是我尝试的代码

    SELECT *
    FROM [HOME].[dba].[ARCHIVE]
    where FRIE like 'AR8%'
    and RESULT = 'X'
    and EXISTS(SELECT FRIE, RESULT
            FROM [HOME].[dba].[ARCHIVE]
            where RESULT = 'Y');

EXISTS的所有功能,但之后只是忽略了嵌套查询

2 个答案:

答案 0 :(得分:2)

您的查询在EXISTS部分中没有相同的WHERE子句。我认为这对你有用:

 SELECT *
    FROM [HOME].[dba].[ARCHIVE]
    WHERE FRIE like 'AR8%'
    AND RESULT = 'X'
    AMD EXISTS(SELECT TOP 1 1
            FROM [HOME].[dba].[ARCHIVE]
            where FRIE like 'AR8%' AND RESULT = 'Y');

答案 1 :(得分:0)

我建议对子查询使用INNER JOIN,而不是使用EXISTS语句。像这样:

SELECT *
FROM [HOME].[dba].[ARCHIVE] a
    INNER JOIN (SELECT FRIE
                FROM [HOME].[dba].[ARCHIVE]
                WHERE RESULT = 'Y') t1 ON a.FRIE = t1.FRIE
WHERE
    FRIE like 'AR8%'
    and RESULT = 'X'

这将返回ARCHIVE中的所有行,其中有一行具有相同的FRIE,其结果为X,结果为Y.

希望这有帮助。