Я пытаюсь выполнить следующий запрос:
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().
Любая идея, что я могу сделать, чтобы запустить запрос с временным (удалить, создать) и выбрать в одном запросе.