Here質問をしていないと質問しました。value> = all(select v2 ...)は、value =(select max(v2)...)とは異なる結果を生成します。
偶然(1つの回答の助けを借りて)解決方法を正しく見つける方法を見つけました。問題はなぜ彼らが異なる結果を生むのか理解できないことです。
ので、データベースは、このスキーマを持っています
そして、私は最高価格でPC
、Printer
とLaptop
からすべてのモデルを探しています。 code
の項目には同じモデルが含まれている可能性があるため、これらの表はすべて一意ではないmodel
列を持つ可能性があります。
私のオリジナルのソリューションでした:
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.
だから私はまさに彼らがこの運動を評価するために使用したエンジンわかりません。
データに「NULL」が含まれていますか? 'select 1 where 1> = ALL(ヌル共用体選択0を選択)'は行を返しません。 –
申し訳ありませんが、第2のデータベースのデータはわかりません(これは、演習が不正行為をしないようにするためのものです)。私は2番目のDBのクエリの結果を見ることさえできません。 '*レコード数が間違っています(2つ少ない)。 – ovgolovin