Недопустимый реляционный оператор в этом запросе - PullRequest
0 голосов
/ 03 декабря 2018
select Bus_no, time
from reaches r
where r.bus_no = 127
having max (hault); 

Когда я пытаюсь проверить запрос в Oracle SQL Developer, он показывает мне ошибку как «недопустимый реляционный оператор».

1 Ответ

0 голосов
/ 04 декабря 2018

«Недопустимый реляционный оператор» указывает, что предикат в запросе не разрешается в условие SQL.

Например, max(hault) не не означает «найти строку с максимумом»значение hault ", как вы могли рассчитывать.max(hault) - это выражение (в данном случае агрегатная функция), которое возвращает максимальное значение hault.

Само по себе значение нельзя использовать в качестве условия в запросе (в выражении where илиимеющий пункт).Чтобы стать действительным условием, вы должны применить реляционный оператор, такой как оператор сравнения (=, !=, <>, ^=, <, <=, >, >=,BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, REGEXP_LIKE, IS NULL, IS NOT NULL и т. Д.) Или оператор набора (IN, NOT IN, EXISTS, NOT EXISTS).

Ссылка на условия SQL: https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlqr/SQL-Conditions.html#GUID-857D67A8-9224-4C71-88A2-4869696F1A1C

Об условиях SQL: https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/About-SQL-Conditions.html#GUID-E9EC8434-CD48-4C01-B01B-85E5359D8DD7

...