синтаксическая ошибка / неправильная грамматика SQL во время сборки - PullRequest
0 голосов
/ 03 июля 2019

Это мой запрос, который я использую в своем Java-файле.Я попробовал это в Oracle SQL Developer, он работает как положено.Но я получаю сообщение об ошибке во время сборки.

 private static final String FIND_TOTALS_BY_STATUS_FOR_HEADER = "SELECT status, count(status) FROM uh_task_executions t1 WHERE th_task_execution_header_id_fk = ?"
        + "AND start_time IN  (SELECT start_time FROM uh_task_executions t2 WHERE th_task_execution_header_id_fk = ? and t1.target = t2.target) GROUP BY status";

Скрипт:

SELECT status, count(status) FROM uh_task_executions t1 WHERE th_task_execution_header_id_fk = 10047
AND start_time IN  (SELECT start_time FROM uh_task_executions t2 WHERE th_task_execution_header_id_fk = 10047 and t1.target = t2.target) GROUP BY status

Сообщение об ошибке

PreparedStatementCallback;плохая грамматика SQL [ВЫБРАТЬ состояние, считать (состояние) ОТ uh_task_executions t1 ГДЕ th_task_execution_header_id_fk =?AND start_time IN (ВЫБЕРИТЕ start_time FROM uh_task_executions t2 WHERE th_task_execution_header_id_fk =? И t1.target = t2.target) состояние GROUP BY];вложенное исключение - java.sql.SQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL ;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования около 'start_time IN (ВЫБЕРИТЕ start_time ОТ uh_task_executions t2 WHERE th_task_execu' в строке 1

1 Ответ

2 голосов
/ 03 июля 2019

Добавьте пробел, здесь:

+ " AND start_time IN ...
   ^
   |
  here

Кроме того, вы бы предпочли использовать псевдонимы таблиц везде , иначе вы можете получить неожиданные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...