如何在MySQL中按SUM()进行排序?

lov*_*ing 31 mysql sql sql-order-by

我有一个表:"ID name c_counts f_counts"

我想订购所有的记录,sum(c_counts+f_counts) 但这不起作用:

SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;

gah*_*ooa 66

不要忘记,如果要混合分组(即SUM)字段和非分组字段,则需要GROUP BY其中一个非分组字段.

试试这个:

SELECT SUM(something) AS fieldname
FROM tablename
ORDER BY fieldname
Run Code Online (Sandbox Code Playgroud)

或这个:

SELECT Field1, SUM(something) AS Field2
FROM tablename
GROUP BY Field1
ORDER BY Field2
Run Code Online (Sandbox Code Playgroud)

你总是可以像这样做一个派生查询:

SELECT
   f1, f2
FROM
    (
        SELECT SUM(x+y) as f1, foo as F2
        FROM tablename 
        GROUP BY f2
    ) as table1
ORDER BY 
    f1
Run Code Online (Sandbox Code Playgroud)

很多可能!


Vir*_*aru 8

这就是你如何做到的

SELECT ID,NAME, (C_COUNTS+F_COUNTS) AS SUM_COUNTS 
FROM TABLE 
ORDER BY SUM_COUNTS LIMIT 20
Run Code Online (Sandbox Code Playgroud)

SUM函数将累加所有行,因此该order by子句是无用的,而您必须使用该group by子句.


Dar*_*jax 7

你可以试试这个:

SELECT * 
FROM table 
ORDER BY (c_counts+f_counts) 
LIMIT 20
Run Code Online (Sandbox Code Playgroud)