gpt4 book ai didi

sql - Oracle PL/SQL CASE 语句可以包含 SELECT 查询吗?

转载 作者:行者123 更新时间:2023-12-02 04:20:33 25 4
gpt4 key购买 nike

我正在尝试做类似的事情:

CASE
WHEN number IN (1,2,3) THEN 'Y' ELSE 'N' END;

相反,我想在列表的位置进行查询,如下所示:

CASE
WHEN number IN (SELECT num_val FROM some_table) THEN 'Y' ELSE 'N' END;

我似乎无法让它工作。另外,这里是一个查询示例。

    SELECT number, (CASE
WHEN number IN (SELECT num_val FROM some_table) THEN 'Y' ELSE 'N' END) AS YES_NO
FROM some_other_table;

最佳答案

是的,这是可能的。请参阅下面的示例,该示例将按照您的意图进行。不同的是它使用了EXISTS。而不是 IN .

SELECT a.number, 
(CASE WHEN EXISTS (SELECT null FROM some_table b where b.num_val = a.number)
THEN 'Y'
ELSE 'N'
END) AS YES_NO
FROM some_other_table a;

编辑:我承认:我个人更喜欢别人给出的答案。

但是,根据您的数据,此查询与其他查询之间会有差异。

如果对于值 number在表中some_other_table你可以有很多 num_val 的匹配条目在表中some_table ,那么其他答案将返回重复的行。这个查询不会。

也就是说,如果您使用 left join其他人给出的查询,并添加一个group by , 那么你就不会得到重复项。

关于sql - Oracle PL/SQL CASE 语句可以包含 SELECT 查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810301/

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