我想在表中选择数据,以便它应该按用户ID对其进行分组,除了该列中的一个值,并按日期时间和desc排序。 我得到的问题是分组的项目不按日期和时间以desc方式排序。 我的意思是分组项目显示在前面的行。 我怎样才能做到这一点。 这就是我所做的。
SELECT * FROM `tbljobs`
GROUP BY user_id
UNION ALL
SELECT * FROM tbljobs
WHERE user_id = '1'
ORDER BY date_time DESC
LIMIT 20"
其中“1”不应分组。
答案 0 :(得分:1)
您的ORDER BY仅在第二个语句上执行。您必须使用大括号来排序整个结果:
(SELECT *
FROM `tbljobs`
GROUP BY user_id)
UNION ALL
(SELECT *
FROM tbljobs
WHERE user_id = '1')
ORDER BY date_time DESC
答案 1 :(得分: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