我对下面的查询有一个问题。基本上,下面的查询给出了一个ITEM_MASTER表中的所有项,这些项位于ITEM_LOCATION表的位置'9999‘,并且在ITEM_LOCATION表中的状态也是'C’。我想检查下面的查询中是否有任何这些项目也在任何其他位置,并且状态为'A‘。
因此,基本上我希望交叉引用这个查询中的项,看看它们中是否有任何其他位置也出现在任何其他位置,而不仅仅是9999,以及它们的状态是否为'A‘
SELECT IM.ITEM MIN,
IM.ITEM_DESC,
IL.ITEM MIN,
IL.LOC,
IL.STATUS
FROM ITEM_MASTER IM,ITEM_LOC IL
WHERE IM.ITEM_LEVEL = 2
AND IM.TRAN_LEVEL = 2
AND IL.STATUS = 'C'
AND IM.ITEM = IL.ITEM
AND IL.LOC = 9999;
谢谢!
发布于 2015-05-11 20:52:05
首先,您应该使用适当的join
语法编写查询:
SELECT IM.ITEM MIN, IM.ITEM_DESC,
IL.ITEM MIN, IL.LOC, IL.STATUS
FROM ITEM_MASTER IM JOIN
ITEM_LOC IL
ON IM.ITEM = IL.ITEM
WHERE IM.ITEM_LEVEL = 2 AND IM.TRAN_LEVEL = 2 AND IL.STATUS = 'C' AND
IL.LOC = 9999;
您可以使用exists
实现您想要的功能
SELECT IM.ITEM MIN, IM.ITEM_DESC,
IL.ITEM MIN, IL.LOC, IL.STATUS
FROM ITEM_MASTER IM JOIN
ITEM_LOC IL
ON IM.ITEM = IL.ITEM
WHERE IM.ITEM_LEVEL = 2 AND IM.TRAN_LEVEL = 2 AND IL.STATUS = 'C' AND
IL.LOC = 9999 AND
EXISTS (SELECT 1
FROM ITEM_MASTER IM2 JOIN
ITEM_LOC IL2
ON IM2.ITEM = IL2.ITEM
WHERE IM2.ITEM = IM.ITEM AND
IL2.LOC <> 9999 AND
IL2.STATUS = 'A'
);
https://stackoverflow.com/questions/30168077
复制相似问题