SELECT co.id, IFNULL( oe.follow_status, 'unFollow' ) AS followStatus, co.due_time FROM car_order co LEFT JOIN order_expire oe ON oe.order_id = co.id WHERE co.type = '贷款' AND co.STATUS = '已放款' AND co.approve_status != '结清成功' AND date_FORMAT( co.due_time, '%Y-%m-%d' ) <= '2022-10-29' ORDER BY field( oe.follow_status, 'unFollow', 'follow' ), co.due_time DESC, co.id DESC
日期排序错误。应该怎么写呢?
P粉4404536892024-04-05 11:17:25
SELECT co.id, IFNULL( oe.follow_status, 'unFollow' ) AS followStatus, co.due_time FROM car_order co LEFT JOIN order_expire oe ON oe.order_id = co.id WHERE co.type = '贷款' AND co.STATUS = '已放款' AND co.approve_status != '结清成功' AND co.due_time <= '2022-10-29' ORDER BY field( followStatus, 'unFollow', 'follow' ), co.due_time DESC, co.id DESC
您应该改为通过 IFNULL 别名 followStatus 进行排序。
P粉0644484492024-04-05 00:21:23
假设 due_time
是时间戳列,您应该能够直接将其与日期文字进行比较:
SELECT co.id, IFNULL(oe.follow_status, 'unFollow') AS followStatus, co.due_time FROM car_order co LEFT JOIN order_expire oe ON oe.order_id = co.id WHERE co.type = '贷款' AND co.STATUS = '已放款' AND co.approve_status != '结清成功' AND co.due_time <= '2022-10-29' ORDER BY FIELD(oe.follow_status, 'unFollow', 'follow'), co.due_time DESC, co.id DESC;
DATE_FORMAT()
函数用于将日期/时间戳转换为字符串,但这里不需要它,因为可以直接比较日期/时间戳列。