ここで、クエリが機能しないことについて質問しました。
偶然(1つの答えの助けを借りて)解決策を正しくする方法を見つけました。問題は、なぜそれらが異なる結果を生み出すのか理解できないことです。
したがって、データベースには次のスキーマがあります。
そして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.
この演習を評価するためにどのエンジンを正確に使用しているかはわかりません。