gpt4 book ai didi

sql - 如何根据表中的其中一个值跳过映射到多个值的 id

转载 作者:行者123 更新时间:2023-11-29 14:15:27 25 4
gpt4 key购买 nike

我知道这听起来可能令人困惑,所以让我解释一下我要实现的目标。我有以下数据。

trxn_id      event_value
1567 4
1567 1
1567 23
2568 1
2568 4
2568 5

现在,我需要选择所有没有 event_value 23 的交易.

如果我这样做 select trxn_id from table where event_value<>23然后显然我将获得 trxn id,因为其他 event_value 也出现在其中。

我为解决这个问题所做的是选择不同的 trxn_id 并循环遍历它们并仅插入那些没有 event_value 23 的。如下所示。

FOR v_intrim_loop1 IN (select distinct t.trxn_id from table t)
LOOP
BEGIN
if(not exists(select 1 from table where event_id=23 and trxn_id=v_intrim_loop1.trxn_id)) THEN
insert into temp_table(trxn_id) values (v_intrim_loop1.trxn_id);
END IF;
END;
END LOOP;

我相信有一种简单且更有效的方法可以做到这一点。请让我知道如何。谢谢。

最佳答案

select trxn_id
from table1
group by trxn_id
having count(case event_value when 23 then 1 end) = 0

想法是使用group by 来创建具有相同trxn_id 的行 block 。

然后我们使用 having 过滤掉所有行数超过 0 且 event_value = 23 的 block 。 1 在这里只是一个虚拟的非空值;如果 event_value 不是 23,则 case 表达式返回 nullcount 会跳过它。

关于sql - 如何根据表中的其中一个值跳过映射到多个值的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com