mariadb 带有排序问题的Mysql select查询

t9aqgxwy  于 2022-11-08  发布在  Mysql
关注(0)|答案(1)|浏览(119)

我想分别显示一个已付状态(1)列和3个未付状态(0)列。
已付状态基于到期日期,大于当前日期的日期视为已付状态,小于到期日期的日期视为未付状态。输出可以基于录入日期。

我的数据表:

| 识别码|到期日|入职日期|
| - -|- -|- -|
| 一个|2022年12月10日|2022年10月11日|
| 2个|2022年12月9日|2022年9月1日|
| 三个|2022年10月10日|2022年10月18日|
| 四个|0000年00月00日|2022年10月17日|
| 五个|2022年9月8日|2022年10月1日|
| 六个|0000年00月00日|2022年10月15日|
| 七个|0000年00月00日|2022年9月9日|
| 八个|2022年11月30日|2022年9月10日|

输出将为:

| 识别码|到期日|入职日期|状态|
| - -|- -|- -|- -|
| 一个|2022年12月10日|2022年10月11日|一个|
| 三个|2022年10月10日|2022年10月18日|第0页|
| 四个|0000年00月00日|2022年10月17日|第0页|
| 五个|2022年9月8日|2022年10月1日|第0页|
| 2个|2022年12月9日|2022年9月1日|一个|
| 六个|0000年00月00日|2022年10月15日|第0页|
| 七个|0000年00月00日|2022年9月9日|第0页|
| 八个|2022年11月30日|2022年9月10日|一个|
注:现在()考虑为2022年10月18日。最后也只有2个未支付状态,因此将显示其余已支付状态。
第一次尝试计算状态:

SELECT table.* , CASE WHEN `expirydate` >= NOW() THEN "1" ELSE "0" END AS paidstatus 
 FROM table ORDER BY paidstatus DESC
  • 谢谢-谢谢
xhv8bpkk

xhv8bpkk1#

你可以这样做来解决你的问题。

SELECT *, ( table.Expirydate > NOW() ) as `Paid_Status` FROM table ORDER BY `Paid_Status` DESC;

相关问题