我试图使用Oracle的ORDER BY语句对多个列,但只有一列进行排序。我的查询是
SELECT s.STDLASTNAME, s.STDFIRSTNAME, s.STDGPA
FROM Student s
ORDER BY
s.STDGPA DESC,
s.STDLASTNAME,
s.STDFIRSTNAME;
这是我的结果:
STDLASTNAME STDFIRSTNAME STDGPA
COLAN CRISTOPHER 4
PILGRIM WILLIAM 3.8
DODGE MARIAH 3.6
KENDALL CANDY 3.5
DODGE TESS 3.3
ESTRADA JOE 3.2
WELLS HOMER 3
KENDALL WALLY 2.8
NORBERT BOB 2.7
MORALES ROBERTO 2.5
BRAZZI LUKE 2.2
但是我希望得到:
STDLASTNAME STDFIRSTNAME STDGPA
BRAZZI LUKE 2.2
COLAN CRISTOPHER 4
DODGE MARIAH 3.6
DODGE TESS 3.3
ESTRADA JOE 3.2
KENDALL CANDY 3.5
KENDALL WALLY 2.8
MORALES ROBERTO 2.5
NORBERT BOB 2.7
PILGRIM WILLIAM 3.8
WELLS HOMER 3
答案 0 :(得分:1)
如果要按姓氏排序,那么它应该是order by
中的第一个键:
order by stdlastname, stdfirstname, stdgpa desc
答案 1 :(得分:0)
尝试如下
SELECT s.STDLASTNAME, s.STDFIRSTNAME, s.STDGPA
FROM Student s
ORDER BY
s.STDLASTNAME
s.STDFIRSTNAME, s.STDGPA
答案 2 :(得分:0)
这是你写的:
ORDER BY
s.STDGPA DESC, --> (A)
s.STDLASTNAME, --> (B)
s.STDFIRSTNAME; --> (C)
这意味着:
s.stdgpa
列中的值以降序(A)对结果进行排序。s.stdgpa
值(在您的示例中没有一个行),那么请按s.stdlastname
的升序(B)对这些行进行排序< / li>
s.stdlastname
值(DODGE
和KENDALL
就是这种情况),则将这些行按s.stdfirstname
进行升序排列订单(C)(因此,对于DODGE,MARIAH首先,TESS其次)显然,您想要按姓氏,名字然后(可能)STDGPA
(按降序排列)对结果进行排序,因此上面的人已经说过了:
ORDER BY
s.STDLASTNAME,
s.STDFIRSTNAME,
s.STDGPA DESC;
答案 3 :(得分:0)
您可以尝试
(?:^|\s+)((?:(?!:\/\/)[a-zA-Z0-9_:?' ])*)(?=\s|$)
或
ORDER BY s.STDLASTNAME, s.STDFIRSTNAME
以获得所需的结果。