我有一个生日庆祝者列表,我想根据我的标题显示它,例如:
+-------------------------------------+------------+
| parties_name | birthday |
+-------------------------------------+------------+
| John Doe Lee | 2016-02-15 |
| Lee Doe John | 2016-02-17 |
| Jane Doe Lee | 2016-02-18 |
| Spongebob Squarepants | 2016-02-19 |
| Sandy Cheeks | 2016-02-01 |
| Squidward Tentacles | 2016-02-02 |
| Patrick Starfish | 2016-02-03 |
+-------------------------------------+------------+
假设记录顶部的人是当前的生日庆祝者,而底层人员是下一个庆祝者,最后一行是以前的庆祝者。不使用UNION或UNION ALL的任何建议?感谢您的帮助
最简单的解决方案可能是:
SELECT parties_name, birthday
FROM birthdays
WHERE birthday >= UTC_DATE
ORDER BY birthday ASC
UNION
SELECT parties_name, birthday
FROM birthdays
WHERE birthday < UTC_DATE
ORDER BY birthday ASC
更新:我们可以在 1 个查询中执行此操作:
SELECT *
FROM Birthdays
ORDER BY CASE WHEN Birthday >= UTC_DATE THEN 1 ELSE 2 END ASC
请检查 SQL 小提琴