我最近开始使用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的所有功能,但之后只是忽略了嵌套查询
答案 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.
希望这有帮助。