Сбой, потому что =
ожидает одно значение для сравнения, а не список значений, который возвращает select
. Технически, он хочет скалярный подзапрос - подзапрос, который возвращает 1 столбец и 0 или 1 строку.
Вы можете исправить проблему синтаксиса разными способами.
Использование агрегация для возврата одного значения:
WHERE trip.price = ( SELECT MAX(price) FROM hiking_trip )
Используйте limit
для возврата одного значения:
WHERE trip.price = (SELECT price FROM hiking_trip LIMIT 1)
Используйте in
для соответствия любому значению:
WHERE trip.price IN (SELECT price FROM hiking_trip)
Используйте any
:
WHERE trip.price = ANY (SELECT price FROM hiking_trip)