首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2012-12-16 
HSQL 倒序批量更新的问题,坐等啊!!!有数据表Tab,其中有a,b 2个字段,并且a和b为联合主键,a为String类型,b为

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语句吧
[其他解释]
说具体点呢,

热点排行