SQL> select * from testa;V1 V2 T X Y
---------- ---------- ---------- ---------- ---------- ------------
v1 v2 07-08-17 04:42:40 1 1
f f 07-08-17 04:42:41 1 1
jh h 07-08-17 04:42:42 1 2
jh h 07-08-17 04:42:43 1 2
g h 07-08-17 04:42:45 4 5
表结构如上,(x,Y)代表每一个点,t代表对点操作的时间, v1,v2是操作参数.请问怎样把所有最后操作的点查出来:想要的结果应如下图所示:
SQL> V1 V2 T X Y
---------- ---------- ---------- ---------- ---------- ------------
f f 07-08-17 04:42:41 1 1
jh h 07-08-17 04:42:43 1 2
g h 07-08-17 04:42:45 4 5
---------- ---------- ---------- ---------- ---------- ------------
v1 v2 07-08-17 04:42:40 1 1
f f 07-08-17 04:42:41 1 1
jh h 07-08-17 04:42:42 1 2
jh h 07-08-17 04:42:43 1 2
g h 07-08-17 04:42:45 4 5
表结构如上,(x,Y)代表每一个点,t代表对点操作的时间, v1,v2是操作参数.请问怎样把所有最后操作的点查出来:想要的结果应如下图所示:
SQL> V1 V2 T X Y
---------- ---------- ---------- ---------- ---------- ------------
f f 07-08-17 04:42:41 1 1
jh h 07-08-17 04:42:43 1 2
g h 07-08-17 04:42:45 4 5
解决方案 »
- 序列触发
- 急求一个sql语句?
- oracle10g 如何能查出用户访问数据库的历史记录
- ORACLE无法打开,数据文件损坏如何恢复?
- 表 KSOURCE.USERINFO 发生了变化, 触发器/函数不能读它
- 怎么用标准的sql语句查询 blob字段的大小?
- oracle 中按位与是哪个操作符? 类似SQLSERVER中的 &
- 有什么方法可以用sql语句直接解决分页?
- 如何关闭并开启Oracle 9i的本地服务?
- 两个表之间的数据插入
- oracle update 更新某一列有两个相同值,我想将这两个相同值,更新成不同的值应该怎么做?请指教!!!
- 急!怎样打开并修改表里的触发器语句?请高手帮忙。。。谢谢
Select v1 from testa where v1=A.v1 and v2=A.v2 and T>A.T )
SQL> Select * from testa A where not exists(
2 Select v1 from testa where v1=A.v1 and v2=A.v2 and T>A.T );V1 V2 T X Y
---------- ---------- ---------- ---------- ----------
jh h 2 1 2
g h 5 4 5
f f 2 1 1
v1 v2 1 1 1以上是"WangZWang"给的语句执行结果,
多了一条记录......
------------------------------------------------------
以上这条记录要去掉就是要的结果,如下:
V1 V2 T X Y
---------- ---------- ---------- ---------- ----------
jh h 2 1 2
g h 5 4 5
f f 2 1 1
否则只有强制去掉 and V1<>'v1' ??
(1,1)这个点对应的最后一次操作是:
f f 2 1 1
--------------------------------------------------------
而不是:
v1 v2 1 1 1
------------------------------------------------------
这个表的主键是t,x,y
我总 觉得你用操作参数作为限制条件总有点不太好,
2 Select v1 from testa where X=A.X and Y=A.Y and T>A.T );
inner join
(select max(t) as t,x,y from testa group by x,y )b
using( t,x,y);
表数据和表结构如下:SQL> select * from testa;V1 V2 T X Y
---------- ---------- ---------- ---------- ----------
v1 v2 1 1 1
f f 2 1 1
jh h 1 1 2
jh h 2 1 2
g h 1 4 5
fgf fg 3 4 0
d d 2 1 1
gfh hfd 3 1 1
2 2 2
fg fhd 1 1 5
f gf 2 4 5
fdg fgf 3 4 5现在我要查询第一次修改过,且没有被第2次修改的点;应该怎样实现:
目标结果应如下:
V1 V2 T X Y
---------- ---------- ---------- ---------- ----------
g h 1 4 5
fg fhd 1 1 5
V1 V2 T X Y
---------- ---------- ---------- ---------- ----------
fg fhd 1 1 5
select * from testa where t>1 and t1.x=x and t1.y=y);
你那还要加点条件:
select * from testa t1 where t=1 and not exists(
select * from testa where t=3 and t1.x=x and t1.y=y);