select * from cs_all_log a where id = (select max(id) from cs_all_log b where a.mid = b.mid)这个一执行系统就死了。
解决方案 »
- 求助:从空格开始去掉后面的所有内容
- Tomcat4.1连接数据库(Oracle)的问题
- liunx系统里面从数据库查询大量数据时报如下错,求解
- group by的问题
- 用delphi的dbexpress中的SQLStoredProc1调用oracle的存储过程老出现list index out of bound(0)?
- ORACLE9I数据导出问题!很急@!谢谢
- EXP导出时提示用户名和密码:
- 已安装数据库是否就不能developer 2000??
- 初学者的一个小问题,一定给分!!!
- VARIABLE 用途
- MySQL参数auto_increment_increment修改的变化问题
- 不写用户名直接访问其他用户下的表或视图
另外既然已经对表使用了别名,那么引用字段的时候最好也加上别名,即:
select a.* from cs_all_log a where a.id = (select max(b.id) from cs_all_log b where a.mid = b.mid)
用分析函数试试select max(id)keep(dense_rank last order by mid) from cs_all_log group by mid;
如果是的话,那至少应该加上时间条件。
另外,你这个子查询,需要对表访问两次。
试试下面这个看看:
select b.* from
(select a.*
,/*dense_rank()*/row_number() over(partition by mid order by id desc) rn
from cs_all_log) b
where rn=1
如果ID有相同的值,就启用dense_rank,注释掉row_number