在这里,我问了关于不工作查询的问题。
意外地(在一个答案的帮助下)我发现了如何正确解决问题。问题是我不明白为什么它们会产生不同的结果。
因此,数据库具有以下架构:
我正在寻找所有型号PC
,Printer
价格Laptop
最高。所有这些表都可能具有非唯一列,因为具有不同的项目可能具有相同的模型。model
code
我原来的解决方案是:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price >= all(select price from model_price)
它给出了错误的结果 - 系统返回* Wrong number of records (less by 2)
。
有效的更正解决方案是:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price = (select max(price) from model_price)
那么,为什么解决方案all
会产生不同的结果呢?
关于 sql 引擎:Now we use Microsoft SQL Server 2012 on the rating stages, and MySQL 5.5.11, PostgreSQL 9.0, and Oracle Database 11g on the learn stage in addition.
所以我不知道他们究竟使用哪个引擎来评估这个练习。