SQLite中使用子查询获取最值对应产品名的问题求助
问题分析与解决方法
你原来的合并查询无结果,核心原因是SELECT MAX(UnitPrice) OR MIN(UnitPrice)逻辑错误。SQL中OR是逻辑运算符,两个非零数值做OR运算会返回布尔值1(SQLite用1代表真),相当于你在找UnitPrice = 1的产品,自然没有匹配结果。
以下是两种符合要求(使用子查询)的正确写法:
方法一:使用IN结合UNION ALL子查询
通过子查询分别获取最小和最大价格,合并成结果集后用IN匹配:
SELECT ProductName, UnitPrice FROM Products WHERE UnitPrice IN ( SELECT MIN(UnitPrice) FROM Products UNION ALL SELECT MAX(UnitPrice) FROM Products );
方法二:使用OR连接两个独立子查询
直接用两个子查询分别获取最小、最大价格,通过OR匹配任意一个:
SELECT ProductName, UnitPrice FROM Products WHERE UnitPrice = (SELECT MIN(UnitPrice) FROM Products) OR UnitPrice = (SELECT MAX(UnitPrice) FROM Products);
两种写法都能正确返回单价最低和最高的所有产品名称及对应价格。
内容的提问来源于stack exchange,提问作者Pauline Pl
相关产品推荐
相关产品推荐

