将两个 SQL 查询合并为一个

Combine two SQL queries into one

如果这看起来有点含糊或者我的术语不正确,请原谅我。我是一名 associate/junior 级别的网络工程师,SQL 查询经验非常有限。除此之外,这就是我正在处理的问题;

我正在尝试在 Goldmine (CMS/CRM) 中创建一个过滤器,该过滤器按下面指定的变量过滤结果。

WHERE c1.U_COMPANY > ' ' AND  c1.U_CONTACT > ' ' AND  
     (c1.U_COUNTRY <> 'SOUTH AFRICA') AND  
     (c1.U_CONTACT NOT LIKE '%MANAGER%' OR c1.U_CONTACT IS NULL) AND     
     (c1.U_KEY1 NOT LIKE '%ARCHIVE%' OR c1.U_KEY1 IS NULL) AND 
     (c1.U_KEY1 NOT LIKE '%DOCUMENT%' OR c1.U_KEY1 IS NULL) AND 
     (c1.U_KEY1 NOT LIKE '%SUPPLIER%' OR c1.U_KEY1 IS NULL) AND  
     (c1.U_KEY1 NOT LIKE '%OTHER%' OR c1.U_KEY1 IS NULL) AND
     (c1.U_KEY1 NOT LIKE '%TENANT%' OR c1.U_KEY1 IS NULL)

我需要合并以下内容,但不知道上面的表达式在哪里是安全的。

SELECT C1.*
FROM FMBSM.DBO.CONTACT1 C1
INNER JOIN (
    SELECT DISTINCT ACCOUNTNO
    FROM FMBSM.DBO.CONTSUPP
    WHERE (
            CONTSUPP.RECTYPE = 'P'
            AND CONTSUPP.CONTACT = 'E-mail Address'
            )
    ) CS
    ON CS.AccountNo = C1.AccountNo
ORDER BY C1.CONTACT

任何建议将不胜感激。

谢谢,

罗布

我认为把它放在最后,在 ORDER BY 之前应该没问题,这里通常会放置一个 WHERE 子句:

SELECT C1.*
FROM FMBSM.DBO.CONTACT1 C1
INNER JOIN (
    SELECT DISTINCT ACCOUNTNO
    FROM FMBSM.DBO.CONTSUPP
    WHERE (
            CONTSUPP.RECTYPE = 'P'
            AND CONTSUPP.CONTACT = 'E-mail Address'
            )
    ) CS
    ON CS.AccountNo = C1.AccountNo
WHERE c1.U_COMPANY > ' ' AND  c1.U_CONTACT > ' ' AND  
     (c1.U_COUNTRY <> 'SOUTH AFRICA') AND  
     (c1.U_CONTACT NOT LIKE '%MANAGER%' OR c1.U_CONTACT IS NULL) AND     
     (c1.U_KEY1 NOT LIKE '%ARCHIVE%' OR c1.U_KEY1 IS NULL) AND 
     (c1.U_KEY1 NOT LIKE '%DOCUMENT%' OR c1.U_KEY1 IS NULL) AND 
     (c1.U_KEY1 NOT LIKE '%SUPPLIER%' OR c1.U_KEY1 IS NULL) AND  
     (c1.U_KEY1 NOT LIKE '%OTHER%' OR c1.U_KEY1 IS NULL) AND
     (c1.U_KEY1 NOT LIKE '%TENANT%' OR c1.U_KEY1 IS NULL)
ORDER BY C1.CONTACT