Как получить имя столбца и метку столбца, когда у данного запроса есть внутренний запрос в левом соединении - PullRequest
0 голосов
/ 18 октября 2019

Может ли кто-нибудь помочь мне получить фактическое имя столбца и его псевдоним, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...