【发布时间】:2021-12-29 09:57:22
【问题描述】:
例如,我有应用程序使用带有此架构的 Mysql 数据库。
packages
id, name, order
1, 'Free', 3
2, 'Basic', 2
3, 'Extensive', 1
ads
id, date, package_id, package_expires_at
1, '2021-12-10 00:00:00', 1, '2022-01-10'
2, '2021-12-15 00:00:00', 3, '2021-12-28'
3, '2021-12-15 00:00:00', 3, '2022-01-10'
4, '2021-12-20 00:00:00', 2, '2022-01-10'
5, '2021-12-21 00:00:00', 1, '2021-12-28'
6, '2021-12-25 00:00:00', 1, '2021-12-28'
我需要实现的是选择所有广告,但首先订购无过期包by packages.order asc, package_expire_at desc,然后订购过期的date desc
例如假设我们在 '2021-12-29' 那么结果应该是
id, date, package_id, package_expires_at
3, '2021-12-15 00:00:00', 3, '2022-01-10'
4, '2021-12-20 00:00:00', 2, '2022-01-10'
1, '2021-12-10 00:00:00', 1, '2022-01-10'
6, '2021-12-25 00:00:00', 1, '2021-12-28'
5, '2021-12-21 00:00:00', 1, '2021-12-28'
2, '2021-12-15 00:00:00', 3, '2021-12-28'
我已经在小提琴上添加了架构
【问题讨论】:
-
日期是存储为 DATE 还是 DATETIME 字段?
-
date是日期时间字段,但 package_expires_at 是date字段
标签: php mysql sql-order-by