
1、首先在oracle建立数据表的时候,对表的命名有以下规范:以字母开头表名长度不能超过30个字符,不能使用oracle保留关键字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接报错的。如下图使用了 *。
3、在建立表的时候,数字也是不能使用表名的开始的。
4、但如果使用双引号对表名进行规范的话,是可以建立以数字或者包含特殊字符的表名的。
5、过这样建立的表名,在查询数据的时候是非常麻烦的,查询时也要加双引号。而且这样建立的表名,在项目运行的过程中也非常容易造成各种麻烦,所以尽量不要使用。
select * from (select 除了时间所有字段写出来,to_date('COMMENTTIME','yyyy-mm-dd hh24:mi:ss') time from T_SCHOOL_RECORDCOMMENT where RECORDID = :p_cid) order by time desc这样试试,但是你的时间字段用该保存为date类型,这样好像很麻烦。。
你的意思其实是按ontentid除去重复, 取时间最新的数据有两种方法可以:
第一种:
select a.* from TAB a where a.contentid exists
(select t.contentid,max(t.lastmodifytime) from TAB t where t.contentid = a.contentid group by t.contentid
)order by a.lastmodifytime desc
第二种可用函数ROW_NUMBER() OVER(PARTITION BY , 也是常用的
SELECT * FROM TAB A WHERE A.CONTENTID IN
(
SELECT CONTENTID
FROM (
SELECT CONTENTID,
ROW_NUMBER() OVER(PARTITION BY T.contentid ORDER BY T.lastmodifytime) RM
FROM TAB T
)
WHERE RM = 1
)
ORDER BY lastmodifytime DESC
希望对你有帮助, 要记得评分啊!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)