Java MYSQL Query,从不同的表中获取2个变量

时间:2017-08-03 07:19:05

标签: java mysql sql

有一个问题,如何使用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

我在这里做错了什么?

2 个答案:

答案 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个值