1

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.

4

2 回答 2

1

您的 ORDER BY 仅在第二条语句上执行。您必须使用大括号对整个结果进行排序:

(SELECT *
FROM `tbljobs`
GROUP BY user_id)
UNION ALL 
(SELECT *
FROM tbljobs
WHERE user_id = '1')
ORDER BY date_time DESC
于 2013-03-03T14:16:04.350 回答
0

谢谢朋友们的建议。经过一番努力,我终于自己创建了解决方案。

(
 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
于 2013-03-04T05:54:27.493 回答