当前位置: 代码迷 >> 其他数据库 >> HSQL 倒序批量更新的有关问题,坐等啊
  详细解决方案

HSQL 倒序批量更新的有关问题,坐等啊

热度:659   发布时间:2013-02-26 00:00:00.0
HSQL 倒序批量更新的问题,坐等啊!!!
有数据表Tab,其中有a,b 2个字段,并且a和b为联合主键,a为String类型,b为int型,
如下所示:
+------------------+
|    a     |    b      |
+------------------+
|    M1   |    1      |
|    M1   |    2      |
|    M1   |    3      |
|    M1   |    4      |
|    M2   |    1      |
|    M2   |    2      |
|    M3   |    1      |
+-----------------+

现在要把a=‘M1‘处b的值都加1,由于业务需要,要从b最大的值开始加

下面是我写的2条SQL语句

SQL 1

update Tab set b= (b + 1) where a= 'M1' order by b desc

SQL 2

update (select a,b from Tab where a='M1' order by a,b desc)a inner join Tab b on a.b = b.b and a.a=b.a set b.b = a.b +1


这2条SQL在HSQL中都执行不通,
第一条报错为
Unexpected token: ORDER in statement [update Tab set b= (b + 1) where a= 'M1' order by b desc
]
第二条报错为
找不到table

但是这2个SQL在MYSQL,MSSQL中都可以执行,
就是HSQL不行,不行啊。。。
------最佳解决方案--------------------------------------------------------
那就直接用SELECT *,B+1 into ... FROM TT where ...
用新表即可
------其他解决方案--------------------------------------------------------
hsql中无法直接替换,
SELECT a,B+1 FROM TT where a='m1'
union
select * from tt where a='m2'

------其他解决方案--------------------------------------------------------
HQL 中无法实现。
------其他解决方案--------------------------------------------------------
求达人们赐我一条可以用的hsql语句吧
------其他解决方案--------------------------------------------------------
说具体点呢,