简体   繁体   中英

how to select with group by order by and desc?

i want to select the data in a table such that it should group it by userid except one value in that column and order by date time and desc. The problem i am getting is the grouped items are not ordering by date and time and in desc manner. I mean the grouped item is showing earlier row. How can i do that. This is what i have done.

SELECT * FROM `tbljobs`
   GROUP BY user_id
   UNION ALL 
     SELECT * FROM tbljobs
     WHERE user_id = '1'
     ORDER BY date_time DESC
     LIMIT 20"

where '1' is should not be grouped.

Your ORDER BY is only executed on the second statement. You have to use braces to order the whole results:

(SELECT *
FROM `tbljobs`
GROUP BY user_id)
UNION ALL 
(SELECT *
FROM tbljobs
WHERE user_id = '1')
ORDER BY date_time DESC

Thank you friends for your suggestions. Finally I created the solution by myself after a lot of effort.

(
 SELECT * 
 FROM (
       SELECT * 
       FROM tbljobs 
       ORDER BY date_time desc 
      ) AS A 
 WHERE user_id <> '1' group by user_id 
) 
UNION ALL 
(
 SELECT * 
 FROM tbljobs 
 WHERE user_id=1
) 
ORDER BY date_time DESC

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