【问题标题】:ORDER BY clause failedORDER BY 子句失败
【发布时间】:2018-11-11 14:30:34
【问题描述】:

我的ORDER BY 子句失败。代码:

try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/kabumbu?autoReconnect=true&useSSL=false", "root", "****");
            String q = "select player_id, sum(number_of_goals) as 'Number of Goals',school_name "
                    + "from goal_scorers g , schools s "
                    + "where g.school_id = s.school_id "
                    + "group by g.player_id "
                    + "ORDER BY number_of_goals DESC";
            PreparedStatement pstm = conn.prepareStatement(q);
            ResultSet rs = null;
            rs = pstm.executeQuery();

            jTable2.setModel(DbUtils.resultSetToTableModel(rs));

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }

【问题讨论】:

  • 对该代码的实际问题的解释(如异常消息)会有所帮助。
  • 这是 sum(number_of_goals) 的订单声明...我错过了“sum”部分,现在运行良好...谢谢:)

标签: java oracle sql-order-by


【解决方案1】:

您查询的是sum(number_of_goals),所以order by 应该使用相同的:

ORDER BY sum(number_of_goals)

而不是ORDER BY number_of_goals

或按列数 (2)

ORDER BY 2

ORDER BY { 列名 |列位置 |表达式}

列名

指从 SELECT 语句的基础查询中的 SelectItems 可见的名称。您在 ORDER BY 子句中指定的 column-Name 不需要是 SELECT 列表。

列位置

一个整数,用于标识 SELECT 语句的基础查询中的 SelectItems 中的列号。 ColumnPosition 必须大于 0 且不大于结果表中的列数。换句话说,如果要按列排序,则必须在 SELECT 列表中指定该列。

表达式 排序键表达式,例如数字、字符串和日期时间表达式。表达式也可以是行值表达式,例如标量子查询或案例表达式。

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2011-09-07
    • 2018-03-23
    • 2012-04-09
    • 1970-01-01
    • 2016-11-15
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多