0

我有一个 sql 表和一个要搜索的值列表。

如果至少表的所有元素都包含在列表中,那么我必须返回 Ticket Id(这意味着我将更新此记录)。否则,我将返回 null(这意味着它将是一个新的注册)。

例如

在此处输入图像描述

用例:

  • 如果我搜索以下元素:C1、C3、C6,这将是一个更新,我将获得 ticketid 1
  • 如果我搜索以下元素:C8、C3、C6、C10,它将是一个创建,我将得到 null 作为返回值

值列表是带有列的预定义类型,在这种情况下,@ElementsToSearch 带有列值

SELECT T.Id
FROM 
    Ticket t
INNER JOIN 
    TicketValue TL ON TL.TicketId = T.Id
LEFT OUTER JOIN
    @ElementsToSearch ES ON ES.Value = TL.Value
WHERE
    ES.Value is null

谢谢你

4

1 回答 1

1

无论您想返回什么,只需交换 null 和 1

declare @ElementsToSearch as Table(value varchar(10))
insert into @ElementsToSearch values('C1'),('C2'),('C3')


SELECT 
CASE WHEN (COUNT(CASE WHEN ES.value IS NULL then 1 end)>0) then NULL else T.id end as output
FROM 
    Ticket t
INNER JOIN 
    TicketValue TL ON TL.TicketId = T.Id
LEFT OUTER JOIN
    @ElementsToSearch ES ON ES.Value = TL.Value
    group by T.id


于 2020-02-05T10:44:49.210 回答