有数据表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语句吧
------其他解决方案--------------------------------------------------------
说具体点呢,