Может ли кто-нибудь помочь мне получить фактическое имя столбца и его псевдоним, используя ResultSetMetaData
class MysqlCon {
public static void main(String args[]) {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
Statement stmt = con.createStatement();
String query = "SELECT \n" +
" RA_Min_1 AS 'ran Min',\n" +
" RA_Max_1 AS 'ran Max' \n" +
"FROM\n" +
" `Masters` m \n" +
" LEFT JOIN \n" +
" (SELECT \n" +
" mr.`Master_ID`,\n" +
" `RA_Min_1`,\n" +
" `RA_Max_1` \n" +
" FROM\n" +
" `Master_Attribute_Range` mr \n" +
" INNER JOIN `Masters` m \n" +
" ON m.`Master_Type_ID` = 3 \n" +
" AND mr.`Master_ID` = m.`Master_ID`) mar\n" +
" ON mar.Master_ID = m.`Master_ID` \n" +
" AND m.`Master_Type_ID` = 3 \n" +
"ORDER BY RA_min_1 \n" +
"LIMIT 0, 25 ";
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsm =rs.getMetaData();
for (int i = 1; i <= rsm.getColumnCount(); i++) {
System.out.println(rsm.getColumnLabel(i) + "--" + rsm.getColumnName(i));
}
} catch (Exception e) {
System.out.println(e);
} finally {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
output
ran Min--ran Min
ran Max--ran Max
Здесь, если я удалю предложение ORDER BY RA_min_1
, оно будетвозврат ожидаемого результата:
ran Min--RA_Min_1
ran Max--RA_Max_1