выполнить SQL-запрос, который включает временную таблицу, которая DROP и Create Temp, а затем SELECT

Я пытаюсь выполнить следующий запрос:

DROP TABLE IF EXISTS TEMP_TBL_NAME;

USE `DB_NAME`;

CREATE TEMPORARY TABLE 
IF NOT EXISTS TEMP_TBL_NAME AS (
    SELECT `FIELD_1`, `FIELD_2` 
    FROM `TBL_NAME` 
    WHERE `FIELD_1` = ? AND `FIELD_2` = ?);

SELECT u.`user_type`, u.`user_id_rank` 
FROM TEMP_TBL_NAME st 
INNER JOIN `TBL_X` u ON st.`FIELD_A` = u.`FIELD_B` 
WHERE u.`FIELD_C` = ?;

(запрос в порядке. Если я запускаю его на MySQL, он работает)

для запуска запроса я использую PreparedStatement и использую:

set = statement.executeQuery();

Я знаю, что executeUpdate() предназначен для запросов с такими действиями, как создание/удаление/и т. д. и executeQuery() для запросов SELECT. --> и мне нужен ResultSet.. в моем случае - он объединен.

(Я знаю, что могу использовать объединения и решить эту проблему, но я хочу использовать временную таблицу, чтобы повысить производительность)

исключение, которое я получил: java.sql.SQLException: Не удается выполнить операторы обработки данных с помощью executeQuery().

Любая идея, что я могу сделать, чтобы запустить запрос с временным (удалить, создать) и выбрать в одном запросе.


person Shai Epstein    schedule 02.03.2018    source источник
comment
Нет. Вы не можете выполнить DML с помощью executeQuery. Вам нужно будет выполнить DML с помощью executeUpdate, а запросы — с помощью executeQuery. IOW, как вы сказали в своем вопросе.   -  person Sloan Thrasher    schedule 03.03.2018
comment
Это не один вопрос, который нужно выполнить, а несколько   -  person Nico Haase    schedule 03.03.2018