日期:2014-05-18  浏览次数:20915 次

这句HQL语句,那里问题?
	String	 hql = "delete from T1 where rtime not in(select rtime from T2)";//正确
String   hql = "delete from T1 where rtime in (select rtime from T1 minus select rtime from T2)";//报错


T1与T2表中,都含rtime 字段
是hiberate不支持minus 吗?
是的话,那如此想用相减的话,那怎么弄?请大虾指点
------解决方案--------------------
select rtime from T1 minus select rtime from T2

这种写法什么意思啊
------解决方案--------------------
select rtime from T1 minus select rtime from T2 这两个要区分一下吧 rtime
------解决方案--------------------
HQL不支持union(union all)、Intersect、MINUS、top关键字及带on的连接查询,但支持distinct、exists、all、any
------解决方案--------------------
"delete from T1 where rtime in (select case when T1.rtime in(select T2.rtime from T2)  then '' else T1.rtime end  from T1)";
------解决方案--------------------
如果查出来的值有很多个,你这个能减吗?
------解决方案--------------------
minus指令是运用在两个标准SQL 语句上的,hibernate的hql语句是面向对象的,不是sql语句,所以不能用这个关键字。不过你可以通过session.creatSQLQuery(),去创建一个SQL查询,应该是可以用的。