结合AND OR和NOT?

问题描述 投票:0回答:1

我似乎一直在寻找解决方法。

我有这样一个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;

这很好,我得到了这样的输出。List

但是在同一个colomn(customFields->Value),我有一些 "kundeCustomers",我想从我的列表中排除,他们有Visma和 "1850... "的 "Value"(2行)

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

我已经尝试了很多NOT喜欢和其他基本的。运气不好。

Visma value1850... to be excluded if it hasd this line

sql
1个回答
0
投票

使用NOT EXISTS。

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;
© www.soinside.com 2019 - 2024. All rights reserved.