mysql order by subquery, the subsequent results are also displayed in the result set
My mysql statement:
SELECT * FROM wht_user AS t1 WHERE pid =79 ORDER BY (
SELECT sum( `distribution_money` ) AS
AGGREGATE FROM wht_distribution_detail AS t2
WHERE t1.id = t2.uid
AND `puid` =79
AND `status` =4
GROUP BY `uid`
ORDER BY `updatetime` DESC
) DESC
How to display AGGREGATE in the result set? Or is there a better way?
ringa_lee2017-05-18 10:57:42
It’s better to ask for others than to ask for yourself. Solved:
SELECT * , COALESCE( SUM( `distribution_money` ) , 0.00 ) AS
AGGREGATE
FROM (
SELECT t1. * , t2 . *
FROM `wht_user` AS t1
LEFT JOIN (
SELECT `uid`, `distribution_money`
FROM `wht_distribution_detail`
WHERE `puid` = 79
AND `status` = 4
) AS t2 ON t1.`id` = t2.`uid`
) AS s2
WHERE `pid` =79
GROUP BY `id`
ORDER BY AGGREGATE DESC