有一个问题,如何使用mysql从不同的表中获取2个不同的变量?是否可以使用预准备语句使其在1个查询中起作用?我是使用java进行mysql数据库编程的新手,所以这就是我的问题。
我试图获得:
user_key from user table
project_key from project table
是的,我知道,表名应该是非单数形式。
我正在尝试:
String project_key = null;
String user_key = null;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://mysql:" + Config.getPortDB() + "/" + Config.getDatabase() + "?"
+ "user=" + Config.getUsername() + "&password=" + Config.getPassword());
String query ="SELECT user_key,project_key FROM user, project WHERE user_key = ? AND project_key = ?";
PreparedStatement preparedStatement = con.prepareStatement(query);
for(int i = 0; i < auths.size() ; i++ ) {
preparedStatement.setString(i+1, auths.get(i));
}
ResultSet rs = preparedStatement.executeQuery();
while(rs.next()) {
project_key = rs.getString("project_key");
user_key = rs.getString("user_key");
}
System.out.println(project_key); // null
System.out.println(user_key); // null
我在这里做错了什么?
答案 0 :(得分:0)
这是您当前的查询:
SELECT user_key,project_key
FROM user, project
WHERE user_key = ?
AND project_key = ?
要从2个表中获得结果,请使用 JOIN ,如下所示:
SELECT u.user_key, p.project_key
FROM user u
JOIN project p ON p.userId = u.id
WHERE u.user_key = ?
AND p.project_key = ?
答案 1 :(得分:0)
SELECT u.user_key,
p.project_key
FROM (select user_key from user WHERE user_key = ?) u,
(select project_key from project WHERE project_key = ?) p
如果两个表完全没有关系,你仍然可以使用子查询获得2个值