any, all mySQL
Может кто нибудь обьяснить, почему я три строки получаю. У меня для теста таблица с самолетами и с колличеством мест в самолете. Я для теста колличество мест изменила на 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 тоже дацу?