在prepareStatement中使用select inside insert查询

时间:2015-12-23 16:58:34

标签: java mysql jdbc

我想使用 preparedStatement 编写插入查询。在里面我想要一个选择查询。我做了以下但我得到:你的SQL语法错误

protected final String createStudentQuery = " INSERT INTO student (student_id, ed_level) VALUES (SELECT MAX(user_id) FROM user WHERE usertype ='Student' , ?)";

然后

stmt5 = conn.prepareStatement(createStudentQuery);
stmt5.setString(1, ed_level);
stmt5.executeUpdate();

所有声明(连接,声明)都已完成。

1 个答案:

答案 0 :(得分:0)

需要插入2个值,student_id和ed_level。但是在select语句中只有一个值MAX(user_id)。您还必须在select查询中添加ed_level的值。
此外,您的查询应该是:

INSERT INTO <TABLE_1> (COLUMN_1, COLUMN_2,...) SELECT COLUMN_1, COLUMN_2,... FROM <TABLE_2> WHERE <CONDITION>

我已将查询修改为以下内容:

INSERT INTO student (student_id, ed_level) VALUES ((SELECT MAX(user_id) FROM user WHERE usertype ='Student') , ?)

希望这有帮助。