我有一个SQL数据库,我想找到符合一个条件的所有记录,但是从该组结果中排除与第二个条件匹配的记录。更具体地说 -
带有Fields ='DocID','Description','SignID'
的表'Documents'表'签名',其中Fields ='SignID','SignatoryName'
我想查找特定签名人签署的所有文件,例如
SELECT d.DocID, s.SignID
FROM Documents AS d
INNER JOIN Signatures AS s ON d.SignID = s.SignID
WHERE s.SignatoryName = 'Search Name Here';
但是,许多文件都是由不止一个人签署的(即文件>签名是一对多)。除了上述查询中的特定签名者之外,我想排除其他人签署的文件。换句话说,我想找到所有那些仅由特定签字人签署的文件。
但我不确定如何修改我的查询来实现这个目标。
答案 0 :(得分:1)
尝试使用以下查询:
(SELECT d.DocID, s.SignID
FROM Documents AS d)
temp1
INNER JOIN Signatures AS s ON d.SignID = s.SignID
WHERE s.SignatoryName = 'Search Name Here' and d.DOCID not in ( select DocID from temp1)
答案 1 :(得分:0)
假设SignatoryName不为null,您可以尝试:
SELECT d.DocID, s.SignID
FROM Documents AS d
WHERE 'Search Name Here' = (
SELECT CASE WHEN MAX(SignatoryName) = MIN(SignatoryName)
THEN SignatoryName ELSE NULL END
FROM Signatures AS s ON s.SignID = d.SignId
)