mysql中声明的变量如何识别

@i=@i:=@i+rankmember_idmember_idinviteCount
`tb_invite_friend`
member_id

语句如上,在navicat中能正常运行,但移植到jfinal后运行,报错如下:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT

 (@i:=@i+1) rank,

member_id,

COUNT(member_id) inviteCount

FROM

`tb_inv' at line 2

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

应该是无法识别 @i:=@i+1) rank 

然后我在 set 前面加了 井号 运行通过,但只有 member_id 和 inviteCount 的数据,没有前面的排序。

这个能解决吗,感谢大神

评论区

Ted0067

2020-06-18 17:21

SET @i=0;
SELECT
(@i:=@i+1) rank,
member_id,
COUNT(member_id) inviteCount
FROM
`tb_invite_friend`
GROUP BY
member_id
原sql

chcode

2020-06-18 17:51

@Ted0067 jdbc url 后加上参数&allowMultiQueries=true 试试

Ted0067

2020-06-18 18:08

@chcode 我在 连接数据库的地址加了这段,没变化

Ted0067

2020-06-18 18:15

原因应该是 @i 未声明 ,#set 并没有 进行赋值 而没加#则直接报错,是因为无法执行两天语句吗

Ted0067

2020-06-18 18:35

@chcode 报错变了 java.sql.SQLException: ResultSet is from UPDATE. No Data.
结果集来源于update,没有数据。这是 find方法执行的语句,是不是 set 后面的 ;号直接然sql 结束了

JFinal

2020-06-20 17:36

jfinal 只是将你的 sql + para 直接扔给了底层的 JDBC 去执行,只要是 JDBC 支持就会被支持

热门反馈

扫码入社