gpt4 book ai didi

mysql - 在 case 的 then 子句中使用 select 语句

转载 作者:行者123 更新时间:2023-11-29 01:16:44 24 4
gpt4 key购买 nike

我试图在 case 语句的 then 中包含 select 语句,但输出不是预期的。我知道有不同的方法可以做到这一点,但可以按照我尝试的方式完成吗?

使用以下示例数据:

create table example(name varchar(10));

insert into example values
('abc'),('bcd'),('xyz');

我试过这个查询(这里是 fiddle ):

select 
case when ((select * from example where name='abc')>=1)
then (select * from example where name='abc')
else (select count(*) from example)
end
from example

但它输出

333

Expected output if name='abc' exist

name
abc

如果不是 count(*)

提前致谢

最佳答案

示例中的子查询是 (select * from example where name='abc') 这是一个结果集,而不是标量值。目前它“有效”是因为它正在将表中的唯一列与值 1 进行比较,但如果表中有多个列,它就会出错。也许您打算 (select count(*) from example where name='abc')

同样,case 中的 THEN 子句只能用于提供单个列值。为了做到这一点,也许你的意思是:

select 
case when exists (select * from example where name='abc')
then (select name from example where name='abc')
else (select count(*) from example)
end
from example

但即使在这里您也会得到三行,并且 example 中的行与结果集之间没有关联,所以我不太确定您要做什么。我想还有一个更高的目的,所以我会把它留在那儿。

关于mysql - 在 case 的 then 子句中使用 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21899206/

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