我正在尝试读取从MySql查询创建的临时变量,如下所示:
String name = "";
selectQuery = "select (select "
+ "CONCAT(s.firstname,\" \",s.surname) "
+ "AS name) "
+ "from student s, marks m where m.grade = 'fail'";
try{
pstmt = con.prepareStatement(selectQuery);
rs = pstmt.executeQuery(selectQuery);
int count = 0;
while(rs.next()){
name = rs.getString("name");
System.out.println(++count+". "+name);
}
rs.close();
pstmt.close();
}catch(Exception e){
e.printStackTrace();
}
我得到SQLException作为列' name'未找到。当我在MySql服务器中运行查询时,它运行正常。
答案 0 :(得分:0)
为了应用别名,它必须是在之外嵌套查询的括号中,而不是在其中。但是,您可以完全删除它,只需直接在选择列表中使用concat
调用。
还有两个旁注:
from
列表中放置多个表)已被弃用了相当长一段时间。使用显式连接被视为更好的做法。concat_ws
代替concat
可能会为您自己处理空白节省一些麻烦。简而言之:
select CONCAT_WS(' ', s.firstname, s.surname) AS name
FROM student s
JOIN marks m ON s.id = m.student_id
WHERE m.grade = 'fail'