重复值-oracle 用rowid 取重复的sql语句怎么理解

问题描述

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最大的那行之外的所有数据,也就是除了最后一行之外的所有数据

时间: 2024-12-08 16:50:05

重复值-oracle 用rowid 取重复的sql语句怎么理解的相关文章

sql-jsp +oracle分页问题 主要是在SQL语句上

问题描述 jsp +oracle分页问题 主要是在SQL语句上 <%@ page language=""java"" contentType=""text/html; charset=UTF-8"" pageEncoding=""UTF-8""%> <%@page import=""java.sql.*""%><!DO

使用Oracle的DBMS_SQL包执行动态SQL语句

引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 在某些场合下,存储过程或触发器里的SQL语句需要动态生成.Oracle的DBMS_SQL包可以用来执行动态SQL语句.本文通过一个简单的例子来展示如何利用DBMS_SQL包执行动态SQL语句:   DECLARE        v_cursor NUMBER;        v_stat NUMBER;        v_row NUMBER;        v_id

检查Oracle数据库中不合理的sql语句

oracle|数据|数据库|语句 代码: select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem ; 上面的sql语句是查询shared pool中占用内存超过100K的sql语句. 这个sql可以非常有效的检查出Oracle shared pool中那些严重占用内存的sql,根据我的经验,绝大多数有问题的sql语句都会在这里留下痕迹,通过在这里找出有问题的sql语句

Oracle中存储过程执行大的Sql语句时如何查看sql是否正确

  在Oracle中编写一个存储过程中,有时会用到较大的sql语句,但是通过PL/sql工具Test查看时又不能看到sql的样子,通过查看发现可以通过Oracle的物理临时表来处理, 在存储过程中添加DBMS_OUTPUT.put_line('要输出的Sql语句'); 然后在PL/sql工具中选中存储过程,右键选择Test执行,执行完成后可以通过DBMS_OUTPUT窗口查看sql结果了,很实用的

如何对oracle jdbc执行的每条sql语句进行检测?

问题描述 请问大家如何对jdbc执行的每条sql语句进行检测?例如:PrepareStatementpstmt=conn.prepareStatement(LOAD_ALLSURVEY);rs=pstmt.executeQuery();如何在执行rs=pstmt.executeQuery();时将执行的sql语句和参数打印出来?我试过的方法有:1.找到classes12.jar的源代码,并对其进行修改,然后再打包,但是没有找到对应的源代码?2.对其进行反编译,但是效果不怎么理想.请问大家有什么好

oracle 常用的一些命令或者sql 语句

1. 创建一个用户,并为该用户分配Create权限,分配表空间:create user scott identified by tiger; grant create session to scott; grant create table to scott; alter user scott default tablespace users; alter user scott quota 512M on users; 2. 查找where条件指定的用户为owner的所有表名称:select o

Oracle查询最近执行过的SQL语句总结

一.查询最近执行过的SQL语句 select sql_text,last_load_time from v$sql order by last_load_time desc;   SELECT   sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'select%' ORDER BY last_load_time DESC;   SELECT   sql_text, las

Oracle 中文字段进行排序的sql语句_oracle

1)按笔画排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_STROKE_M') 2)按部首排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_RADICAL_M') 3)按拼音排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_PI

JavaScript几种数组去掉重复值的方法推荐_javascript技巧

数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复.主要是理清思路和考虑下性能.以下方法,网上基本都有,这里只是简单地总结一下. 思路: 1.遍历数组,一一比较,比较到相同的就删除后面的 2.遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组 3.任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组. 4.遍历数组,取一个元素,作为对象的属性,判断属性是否存在 1. 删除后面重复的: function ov1(arr)