На самом деле не проверял, но эта общая идея должна работать:
SELECT ename, sal FROM emp WHERE sal = (SELECT MIN(sal) FROM emp)
UNION
SELECT ename, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp)
Обратите внимание, что это может вернуть более 2 строк, если имеется более одной строки с (одинаковым) значением MIN или MAX. Он также может вернуть только одну строку, если оба значения MIN и MAX происходят из одной и той же строки (вы можете использовать UNION ALL, чтобы избежать этого).
Кстати, ваш запрос означает: Получить MIN (sal), а затем получить ename
из случайной строки (и то же самое для MAX). В MIN и MAX В таких случаях MySQL решил вернуть одну и ту же случайную строку.
Однако в большинстве баз данных, отличных от MySQL, вы даже не можете иметь такой «случайный» запрос - вам потребуется включить ename
в GROUP BY.