请教大神写一个sql

万物皆字节 2016-12-09 08:49:55
查出各书中首先更新时间最新,然后成色最新的数据
查询结构应该是:
('2', '你的名字', '9成新', 'xx', '09-12月-16 08.30.35.000000 下午');
('3', '西游记', '全新', 'xx', '09-12月-16 08.30.51.000000 下午');
('4', '红楼梦', '9成新', 'xx', '09-12月-16 08.33.22.000000 下午');

CREATE TABLE book(
BOOK_ID varchar2(100) primary key,
BOOK_NAME varchar2(100),
BOOK_STATUS varchar2(100),
BOOK_CONTENT varchar2(1000),
UPDATE_TIME Timestamp);

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('1', '你的名字', '全新', 'xx', '09-12月-16 08.30.13.000000 下午');

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('2', '你的名字', '9成新', 'xx', '09-12月-16 08.30.35.000000 下午');

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('3', '西游记', '全新', 'xx', '09-12月-16 08.30.51.000000 下午');

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('4', '红楼梦', '9成新', 'xx', '09-12月-16 08.33.22.000000 下午');

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('5', '红楼梦', '8成新', 'xx', '09-12月-16 08.33.22.000000 下午');

insert into book (BOOK_ID, BOOK_NAME, BOOK_STATUS, BOOK_CONTENT, UPDATE_TIME)
values ('6', '红楼梦', '7成新', 'xx', '09-12月-16 08.30.13.000000 下午');
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
久疤K 2016-12-13
  • 打赏
  • 举报
回复
引用 7 楼 Aqu415 的回复:
[quote=引用 6 楼 qq_27363679 的回复:] select * from book order by update_time desc,book_status desc; 要求: 首先更新时间最新,然后成色最新的数据 不就是两个排序么? 恰好, 时间可以降序; 状态,根据楼主提供的数据规律来看,通过降序排序正好能够满足要求, 因为字符串的字典顺序,是中文 > 英文 > 数字的 所以,“全新” > "9成新" > ... > "1成新" 故SQL语句select * from book order by update_time desc,book_status desc;满足要求 测试也是满足的。 ---------------------------------- 只是,楼主提供的结果: ('2', '你的名字', '9成新', 'xx', '09-12月-16 08.30.35.000000 下午'); ('3', '西游记', '全新', 'xx', '09-12月-16 08.30.51.000000 下午'); ('4', '红楼梦', '9成新', 'xx', '09-12月-16 08.33.22.000000 下午'); 明显不符合【首先更新时间最新,然后成色最新的数据】的要求啊
每本书都要显示哈[/quote] 对的啊,每本书都有
万物皆字节 2016-12-11
  • 打赏
  • 举报
回复
引用 6 楼 qq_27363679 的回复:
select * from book order by update_time desc,book_status desc; 要求: 首先更新时间最新,然后成色最新的数据 不就是两个排序么? 恰好, 时间可以降序; 状态,根据楼主提供的数据规律来看,通过降序排序正好能够满足要求, 因为字符串的字典顺序,是中文 > 英文 > 数字的 所以,“全新” > "9成新" > ... > "1成新" 故SQL语句select * from book order by update_time desc,book_status desc;满足要求 测试也是满足的。 ---------------------------------- 只是,楼主提供的结果: ('2', '你的名字', '9成新', 'xx', '09-12月-16 08.30.35.000000 下午'); ('3', '西游记', '全新', 'xx', '09-12月-16 08.30.51.000000 下午'); ('4', '红楼梦', '9成新', 'xx', '09-12月-16 08.33.22.000000 下午'); 明显不符合【首先更新时间最新,然后成色最新的数据】的要求啊
每本书都要显示哈
万物皆字节 2016-12-10
  • 打赏
  • 举报
回复
这样应该满足我的需求了,我再约定一下存状态保存的值就好了 select tt.book_id, tt.book_name, tt.book_status, tt.book_content, tt.update_time, tt.rn from (select t.*, row_number() over(partition by t.book_name order by t.update_time desc, decode(t.book_status, '全新', 1, '9成新', 2, '8成新', 3, '7层新', 4) asc) rn from book t) tt where tt.rn = 1 order by tt.book_id;
万物皆字节 2016-12-10
  • 打赏
  • 举报
回复
引用 2 楼 sych888 的回复:
你的名字 最新的不是:'1', '你的名字', '全新', 'xx', '09-12月-16 08.30.13.000000 下午 这个吗?
需要满足更新时间最新,然后再在更新时间中最新的找到成色最新的
久疤K 2016-12-10
  • 打赏
  • 举报
回复
select * from book order by update_time desc,book_status desc; 要求: 首先更新时间最新,然后成色最新的数据 不就是两个排序么? 恰好, 时间可以降序; 状态,根据楼主提供的数据规律来看,通过降序排序正好能够满足要求, 因为字符串的字典顺序,是中文 > 英文 > 数字的 所以,“全新” > "9成新" > ... > "1成新" 故SQL语句select * from book order by update_time desc,book_status desc;满足要求 测试也是满足的。 ---------------------------------- 只是,楼主提供的结果: ('2', '你的名字', '9成新', 'xx', '09-12月-16 08.30.35.000000 下午'); ('3', '西游记', '全新', 'xx', '09-12月-16 08.30.51.000000 下午'); ('4', '红楼梦', '9成新', 'xx', '09-12月-16 08.33.22.000000 下午'); 明显不符合【首先更新时间最新,然后成色最新的数据】的要求啊
sych888 2016-12-09
  • 打赏
  • 举报
回复
select tt.book_id, tt.book_name, tt.book_status, tt.book_content, tt.update_time from (select t.*, row_number() over(partition by t.book_name order by t.book_status desc) rn from book t) tt where tt.rn = 1 order by tt.book_id;
sych888 2016-12-09
  • 打赏
  • 举报
回复
你的名字 最新的不是:'1', '你的名字', '全新', 'xx', '09-12月-16 08.30.13.000000 下午 这个吗?
万物皆字节 2016-12-09
  • 打赏
  • 举报
回复
想了好久,写不出来

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧