我一直在尝试编写正确的查询以获得正确的结果,但几个小时后仍然没有运气。我觉得我很接近,但我用完了技巧......
看一下这个屏幕截图,例如:
突出显示的数据集是我正在寻找的。所以我有很多 SAMPLE_ID 但我希望所有行的状态都是“S”。您会看到未突出显示的数据集具有混合状态,包括“S”。现在我的问题是,我仍然得到那些......
这是我的查询:
SELECT T3.SAMPLE_ID FROM
LIMSFD_SAMPLE_INFO T3
WHERE T3.SAMPLE_ID IN
(SELECT SAMPLE_ID FROM LIMS_FINAL_RESULT WHERE SECTION_ID = 'FD' AND STATUS = 'S' )
AND T3.SAMPLE_ID NOT IN
(SELECT SAMPLE_ID FROM LIMS_FINAL_RESULT WHERE SECTION_ID = 'FD' AND STATUS != 'S' )
因此,第一个子查询以“S”状态获取结果,第二个子查询以“S”状态获取结果,并使用“IN”和“NOT IN”,我认为它会过滤掉不需要的结果.
现在,由于这是 Oracle 8i,我引入的子查询越多,它就越慢。我在这里尝试了这个,它使资源管理器崩溃:
SELECT T3.SAMPLE_ID FROM
LIMSFD_SAMPLE_INFO T3,
LIMSFD_SAMPLE_INFO T4
WHERE T3.SAMPLE_ID IN
(SELECT SAMPLE_ID FROM LIMS_FINAL_RESULT WHERE SECTION_ID = 'FD' AND STATUS = 'S' )
AND T4.SAMPLE_ID NOT IN
(SELECT SAMPLE_ID FROM LIMS_FINAL_RESULT WHERE SECTION_ID = 'FD' AND STATUS != 'S' )
AND T3.SAMPLE_ID <> T4.SAMPLE_ID
有人可以指出我解决这个问题的方向吗?因此,从上图中,我应该只得到突出显示的行,而没有其他行......在我的查询中,我得到了两者。
非常感谢!