Here Я задал вопрос о нерабочем запросе.value> = all (select v2 ...) производит разные результаты от значения = (выберите max (v2) ...)
Случайно (с помощью одного ответа) Я нашел, как правильно решить проблему. Проблема в том, что я не понимаю, почему они дают разные результаты.
Таким образом, база данных содержат эту схему:
И Я ищу все модели от 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.
Так что я не знаю, какой двигатель именно они используют ослов это упражнение.
Любые 'NULL' в данных? 'select 1 where 1> = ALL (select null union select 0)' не возвращает строк. –
Извините, я не знаю данных для второй базы данных (это сделано намеренно для тех, кто делает упражнения не обманывать). Я даже не вижу результата для запросов во второй БД, только рефераты, что не так, например. '* Неверное количество записей (меньше на 2)'. – ovgolovin