繁体   English   中英

然后选择子查询里面的情况时,sqlite bug?

[英]Select subquery inside then of case when statement, sqlite bug?

我发现当我尝试在SQL case语句中选择一列时,除非将其包装在数字函数中,否则它将无法工作。 max(price)似乎选择了列中的值,而仅price或price始终返回空白。

我认为这是一个错误。

这不起作用:

SELECT 
auction,
CASE WHEN auction='1'
    THEN (select max(bid.amount) from bid where bid.auction_id = auction.id)
    ELSE price
END as price_string
FROM product 

这有效:

SELECT 
auction,
CASE WHEN auction='1'
    THEN (select max(bid.amount) from bid where bid.auction_id = auction.id)
    ELSE max(price)
END as price_string 
FROM product 

编辑:固定逗号。

这不是错误。

在无效的查询中,您的CASE语句的两半不兼容。 您有一个聚合函数( MAX(bid.amount) ),它为CASE语句的一部分返回一个值,而列名则为CASE语句的另一部分返回一个集合。 您不能像这样混合集合和集合。

之所以可以使用该查询,是因为CASE语句的两半都返回聚合值,因此是兼容的。

拿一个简单的表:

test_table
col1  |  col2
1        7
5        14
8        3
3        9

如果我这样查询:

SELECT col1 FROM test_table

我将得到以下结果:

col1 
1        
5        
8       
3 

但是,如果我这样查询:

SELECT MAX(col1) FROM test_table

我将得到一个值:

8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM