问题描述
- oracle 用rowid 取重复的sql语句怎么理解
- 这个SQL语句该怎么理解?
SELECT * FROM XUTEST X WHERE ROWID!=(SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID)
解决方案
rowid是表中每条记录的唯一ID.
假设XUTEST 表中有3条记录,SUPID为1,2,2 ROWID分别为r1r2r3
那么sql相当于
SELECT * FROM XUTEST X WHERE ROWID!=(r1r3r3)
解决方案二:
rowid是表中每条记录的唯一ID.rowid是一个单独的数据类型(属于字符型),是一个二进制数据列
语句:SELECT * FROM XUTEST X WHERE ROWID!=(SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID)
SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID选出XUTEST表中最大的rowid(通常是最后一行),然后选出rowid不是最
大的列。
也就是说,这条语句的意思是:选出该表中除了rowid最大的那行之外的所有数据,也就是除了最后一行之外的所有数据
解决方案三:
rowid是表中每条记录的唯一ID.
假设XUTEST 表中有3条记录,SUPID为1,2,2 ROWID分别为r1r2r3
那么sql相当于
SELECT * FROM XUTEST X WHERE ROWID!=(r1r3r3)
解决方案四:
rowid是表中每条记录的唯一ID.rowid是一个单独的数据类型(属于字符型),是一个二进制数据列
语句:SELECT * FROM XUTEST X WHERE ROWID!=(SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID)
SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID选出XUTEST表中最大的rowid(通常是最后一行),然后选出rowid不是最
大的列。
也就是说,这条语句的意思是:选出该表中除了rowid最大的那行之外的所有数据,也就是除了最后一行之外的所有数据