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

haiwalt 2012-11-07 04:44:11
有数据表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不行,不行啊。。。
...全文
156 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2012-11-08
  • 打赏
  • 举报
回复
hsql中无法直接替换, SELECT a,B+1 FROM TT where a='m1' union select * from tt where a='m2'
ACMAIN_CHM 2012-11-07
  • 打赏
  • 举报
回复
HQL 中无法实现。
haiwalt 2012-11-07
  • 打赏
  • 举报
回复
说具体点呢,
WWWWA 2012-11-07
  • 打赏
  • 举报
回复
那就直接用SELECT *,B+1 into ... FROM TT where ... 用新表即可
haiwalt 2012-11-07
  • 打赏
  • 举报
回复
求达人们赐我一条可以用的hsql语句吧

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧