Java sql查询中的排序

Java sql查询中的排序,java,sql,Java,Sql,在这种情况下,如何进行排序?如何以这种或任何其他方式使用order by进行排序 查询我正在使用此查询: 按productno从matTab订单中选择productno、createdt、productcode 输出为 PO/19-20/106 PO/19-20/110 PO/19-20/101 PO/19-20/114 PO/19-20/150 PO/19-20/29 PO/19-20/29 PO/19-20/29 PO/19-20/29 PO/19-20/81 PO/19-20/81 PO/

在这种情况下,如何进行排序?如何以这种或任何其他方式使用order by进行排序

查询我正在使用此查询:

按productno从matTab订单中选择productno、createdt、productcode

输出为

PO/19-20/106
PO/19-20/110
PO/19-20/101
PO/19-20/114
PO/19-20/150
PO/19-20/29
PO/19-20/29
PO/19-20/29
PO/19-20/29
PO/19-20/81
PO/19-20/81
PO/19-20/94
PO/19-20/94
PO/19-20/29
预期结果是:

PO/19-20/29
PO/19-20/29
PO/19-20/81
PO/19-20/81
PO/19-20/94
PO/19-20/94
PO/19-20/101
PO/19-20/106
PO/19-20/110
PO/19-20/114
PO/19-20/150
PO/19-21/152
PO/19-21/190
PO/19-21/200

只需将其他2列添加到ORDERBY子句中,就可以按照您想要的方式对结果进行排序

select productno, createdt, productcode 
from matTab 
order by productno, createdt, productcode 

希望对您有所帮助,Max

如果您可以将查询结果存储到POJO列表中,那么您可以使用定制的
比较器对列表进行排序,如下所示:

POJO
我假设
createdt
是一个字符串,
productcode
是一个整数

class MatTabInfo {
    private String productno;
    private String createdt;
    private int productcode;

    //general getters ans setters
}
定制比较器
首先比较
createdt
(字符串),然后比较
productcode
(整数)


这里的“排序”是什么意思?你能给我们解释一下吗?事实上,我想用上面的订单号按升序或降序排列。那么如何做到这一点..告诉我们您使用的是哪个版本的SQL(例如MySQL、SQL Server、Oracle等),并给出如何使用采购订单编号进行排序的逻辑。SQL SERVER 2008可能您可以向我们展示预期结果作为示例?谢谢Max。您的建议很有价值,但我正在寻找代码,通过这些代码我可以直接获得预期结果,我正在寻找您的预期结果是什么?您想将整个结果放在一列中吗?选择我要查找的问题中提到的productno+'/'+createdt+'/'+ProductCode,或者直接按订单格式获取采购订单编号。PO/19-21/152 PO/19-21/190 PO/19-21/200我正在查看此格式,所有编号应按升序或降序排列。我想知道
PO/19-21/152
表示由“/”连接的3列还是3列不同?@ashish yadav但您的SQL语句选择了3列,我不明白为什么它只基于一个专栏!
class CustomComparator implements Comparator<MatTabInfo> {
    @Override
    public int compare(MatTabInfo o1, MatTabInfo o2) {
        if (o1.getCreatedt().compareTo(o2.getCreatedt()) == 0) {
            if (o1.getProductcode() == o2.getProductcode()) {
                return 0;
            } else if (o1.getProductcode() < o2.getProductcode()) {
                return -1;
            } else {
                return 1;
            }
        } else {
            return o1.getCreatedt().compareTo(o2.getCreatedt());
        }
    }
}
List<MatTabInfo> matTabInfoList = new ArrayList<>();
matTabInfoList = ...//generated by querying from DB
Collections.sort(matTabInfoList, new CustomComparator());