SQL

题目是这样的“一个表t,有个日期列d。需要写SQL,输出日期d。排序要求:d大于当前日期的在小于的之前,距离当前日期越进的在远的之前 。”

按照自己的理解转换为 1到9,9个数。进行排序后输出的为 678954321

建立表语句

CREATE TABLE `t2` (
	`d` CHAR(50) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

两种实现方法为:

SELECT a3.z,a3.d
FROM (
(
SELECT t.m-d z, d
FROM t2,(select max(d) m from t2) t
WHERE t2.d > 5) 

UNION ALL

(
SELECT d-t.m z, d
FROM t2,(select max(d) m from t2) t
WHERE t2.d < 5) 
) a3
ORDER BY a3.z DESC

select d>5 as future, d from t2 order by future desc, abs(d-5)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值