[英]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.