执行包含临时表DROP和Create Temp然后SELECT的SQL查询

时间:2018-03-02 22:25:50

标签: java mysql prepared-statement executequery

我试图执行以下查询:

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()适用于像create / drop / etc这样的操作的查询。 和executeQuery()用于SELECT查询。 - >我需要ResultSet .. 在我的情况下 - 它的组合。

(我知道我可以使用连接并解决这个问题。但我想使用临时表来保持性能更好)

我得到的例外是: java.sql.SQLException:无法使用executeQuery()发出数据操作语句。

我知道如何使用temp(drop,create)运行查询并在一个查询中选择...

0 个答案:

没有答案