首页 > 解决方案 > 结合 AND OR 和 NOT?

问题描述

我似乎一直在寻找解决方案:

我有这个 SQL 查询:

SELECT
    c.CompanyName AS Kunde, 
    c.IsActiveClient AS "Aktiv i CV", 
    c.ssn AS CVR, cf.CustomFieldDefinitionFk, 
    cf.Value
FROM 
    Person AS c
INNER JOIN 
    CustomFields AS cf ON  c.Id = cf.PersonFk
WHERE 
    cf.Value = 'Visma'
ORDER BY 
    Kunde;

这工作正常我得到这个输出:

列表

但是在同一列(customFields->Value)中,我有一些我想从列表中排除的“kunde/Customers”。

他们在“价值”中同时拥有 Visma 和“1850 ...”(在 2 行中)

但是如果他们有“1850”行,即使他们有“Visma”值,他们也不应该在我的列表中。

我已经尝试了很多不喜欢和其他基础知识。没运气。

维斯玛值

1850...如果有这条线就排除在外

标签: sql

解决方案


使用不存在:

SELECT
  c.CompanyName AS Kunde, c.IsActiveClient AS "Aktiv i CV", c.ssn AS CVR, 
  cf.CustomFieldDefinitionFk, cf.Value
FROM Person AS c INNER JOIN CustomFields AS cf 
ON  c.Id = cf.PersonFk
WHERE cf.Value = 'Visma'
AND NOT EXISTS (
  SELECT 1 FROM CustomFields
  WHERE PersonFk = cf.PersonFk AND Value LIKE '1850%'
)
ORDER BY Kunde;

推荐阅读