简体   繁体   中英

MySQL Order results before GROUP BY

Hello I would like to know how to perform ORDER BY on the following QUERY:

SELECT t.*, td.id, td.taskname, td.status, td.date, td.priority,
        DATE_FORMAT(td.completed_on,'%d %b %Y') as completed_on,
        td.completed_by, td.id as idmain,  m.name, c.name as compname,
        GROUP_CONCAT(s.name SEPARATOR '   ') as names
FROM task_assigns t
    LEFT JOIN tasks_todo td ON t.taskid = td.id 
    LEFT JOIN members m ON t.userid = m.id
    LEFT JOIN members s ON t.task_assign = s.id
    LEFT JOIN members c ON td.completed_by = c.id           
WHERE (   t.task_assign = '$userid_task' 
       OR t.userid = '$userid_task' ) 
AND t.date  < NOW() - INTERVAL 10 DAY 
AND td.status = 0  
GROUP BY t.taskid 
LIMIT 10

Right now the returned results are in random order I would like to return them always ordered by id ACS of taskid

在此处输入图片说明

Simply add the two columns in the ORDER BY clause.

Also, this type of grouping will work only if ONLY_FULL_GROUP_BY is disabled and may produce unexpected results.

select t.*,
    td.id,
    td.taskname,
    td.status,
    td.date,
    td.priority,
    DATE_FORMAT(td.completed_on, '%d %b %Y') as completed_on,
    td.completed_by,
    td.id as idmain,
    m.name,
    c.name as compname,
    GROUP_CONCAT(s.name SEPARATOR '&nbsp;&nbsp; ') as names
from task_assigns t
left join tasks_todo td on t.taskid = td.id
left join members m on t.userid = m.id
left join members s on t.task_assign = s.id
left join members c on td.completed_by = c.id
where (
        t.task_assign = '$userid_task'
        or t.userid = '$userid_task'
        )
    and t.date < NOW() - INTERVAL 10 DAY
    and td.status = 0
group by t.taskid
order by t.id,
    t.taskid LIMIT 10

The order of the syntax is

GROUP BY t.taskid 
ORDER BY t.taskid, other_column_if_you_like
LIMIT 10

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM