Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

any, all mySQL

10.06.21 09:54
any, all mySQL
 
melodi_ постоялец
Последний раз изменено 10.06.21 10:08 (melodi_)

Может кто нибудь обьяснить, почему я три строки получаю. У меня для теста таблица с самолетами и с колличеством мест в самолете. Я для теста колличество мест изменила на 1,2,3...

Моя задача селектировать 3 самолета с самым большим колличеством мест. Например есть самолеты с кол-вом мест 5,4,3,2,1. Мне нужны самолеты 5,4,3. Колличество мест разное.

Мой вариант:

select id, no_seats, type, name from plane

where no_seats = (select max(no_seats) from plane) or no_seats <> all (select max(no_seats) from plane) and no_seats > any(select no_seats from plane);


Я ожидала, с (where no_seats = (select max(no_seats) from plane)) получить самолет 5 мест, с (no_seats <> all (select max(no_seats) from plane) ) отсеивает самолет 5 мест (максимальное), тогда с остатка (no_seats > any(select no_seats from plane)) выберается самолет, который самое большое кол-во мест из остаточных самолетов.

Я ожидала например из самолетов no_seats=1,2,3,4,5. Самолет 5 из за (where no_seats = (select max(no_seats) from plane)

и самолет 4 из за (or no_seats <> all (select max(no_seats) from plane) and no_seats > any(select no_seats from plane).


Но я получаю цамолеты 5,4,3. Почему 3 тоже дацу?

 

Перейти на