需求:显示数据有两部分组成:
1.有效的物品按照结束时间升序排列。
2.失效的物品按照结束时间降序排列。
注意点:把两个分别有order by的查询语句用 union 连接起来,不分别加limit的话,各自的排序功能会失效。
SELECT
*
FROM
(
(
SELECT
class.NAME,
class.logo,
class.type,
bag.end_time
FROM
BAG bag
LEFT JOIN xxxx_class class ON class.id = bag.award_class
WHERE
bag.user_id = 100001
AND bag.type = 3
AND bag.end_time >= now()
ORDER BY
bag.end_time
LIMIT 999999
) UNION
(
SELECT
class.NAME,
class.logo,
class.type,
bag.end_time
FROM
BAG bag
LEFT JOIN xxxx_class class ON class.id = bag.award_class
WHERE
bag.user_id = 100001
AND bag.type = 3
AND bag.end_time < now()
ORDER BY
bag.end_time DESC
LIMIT 999999
)
) temp
LIMIT 0,20