首页 新闻 会员 周边

java mybatis报这个错什么原因,找半天没找出来

0
悬赏园豆:20 [已解决问题] 解决于 2016-11-04 17:11

如题,用的mysql数据库,sql语句:

SELECT s.id as id,s.true_name as true_name,(select dept_name from `sns`.sy_dept where id=document_number) as date_birth FROM
`sns`.sy_users s WHERE ( document_number in ( ? , ? , ? ) )

-忘川-的主页 -忘川- | 初学一级 | 园豆:23
提问于:2016-11-04 15:37
< >
分享
最佳答案
0

是否是参数类型不符合

 

收获园豆:10
laugher_ccc | 小虾三级 |园豆:593 | 2016-11-04 15:46

(select dept_name from `sns`.sy_dept where id=document_number) as date_birth这一句是后来加上去的,加上去后就这样了,

-忘川- | 园豆:23 (初学一级) | 2016-11-04 15:47

@流沙°: 你这个document_number到底会有几个值啊

风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 15:51

@流沙°: 返回多个值?

laugher_ccc | 园豆:593 (小虾三级) | 2016-11-04 15:56

@laugher_ccc: 只有一个

-忘川- | 园豆:23 (初学一级) | 2016-11-04 15:57

@风归云隐: 

这是在workbench里可以运行

-忘川- | 园豆:23 (初学一级) | 2016-11-04 15:58

@流沙°: select dept_name from `sns`.sy_dept where id=document_number  这里面的id 是sy_dept表的id还是哪里的?  怎么没看出sy_dept 和sy_users 的关联关系

laugher_ccc | 园豆:593 (小虾三级) | 2016-11-04 16:03

@laugher_ccc: id是sy_dept的主键,sy_user中的document_number 就是sy_dept的id

-忘川- | 园豆:23 (初学一级) | 2016-11-04 16:06

@流沙°: 那你不能这么写

laugher_ccc | 园豆:593 (小虾三级) | 2016-11-04 16:06

@laugher_ccc: 应该怎么写?

-忘川- | 园豆:23 (初学一级) | 2016-11-04 16:07

@流沙°: 

SELECT s.id as id,s.true_name as true_name,t.dept_name as date_birth FROM
`sns`.sy_users s,`sns`.sy_dept t WHERE t.id =s.document_number and ( document_number in ( ? , ? , ? ) )  这个试一下

laugher_ccc | 园豆:593 (小虾三级) | 2016-11-04 16:10

@laugher_ccc: 还是报一样的错

-忘川- | 园豆:23 (初学一级) | 2016-11-04 16:17

@流沙°: 这几条语句在workbench里都可以运行,一放到mybatis的xml文件中就报错

-忘川- | 园豆:23 (初学一级) | 2016-11-04 16:20

@流沙°: 截图xml看一眼

laugher_ccc | 园豆:593 (小虾三级) | 2016-11-04 16:29
其他回答(1)
0

WHERE 子句不用接括号吧,还有看错误好像说你的数据源配置是不是有问题

收获园豆:10
风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 15:49

(select dept_name from `sns`.sy_dept where id=document_number) as date_birth 问题应该出在这一段,没加这一段之前没问题,加了就报错

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 15:51

@流沙°: 就觉得你这个语句写的很奇怪,最后有一个document_number in,然后这里又有个 where id=document_number,干嘛不直接把两个表inner join起来查??

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 15:53

@流沙°: 

SELECT s.id as id,s.true_name as true_name,sd.dept_name as date_birth FROM
`sns`.sy_users s inner join `sns`.sy_dept sd on s.document_number=sd.id WHERE s.document_number in ( ? , ? , ? )

试试这个

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 15:58

@风归云隐: 奇怪了,在workbench里可以运行

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 16:00

@流沙°: 你这个图里面的(select dept_name from sns.sy_dept where id=dept_id)跟你上面贴出来不一样,这里是id=dept_id,上面贴出来的是id=document_number

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 16:02

@风归云隐: 这两个字段是一样的

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 16:03

@流沙°: 用你写的那个sql语句报这个错:

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 'WHERE ( document_number in
(
'050748fe7fa' at line 6
]

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 16:07

@流沙°: 我这个语句没有测试,只是个思路,具体你自己修改一下

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 16:17

@风归云隐: 你这个在workbench里面也可以用,但是放到mybatis的xml文件里面也报错了

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 16:18

@流沙°: 那就说明不是sql语句本身的问题,肯定是你后台程序哪里不对,仔细一步一步调试吧

支持(0) 反对(0) 风归云隐 | 园豆:416 (菜鸟二级) | 2016-11-04 16:23

@风归云隐: 我再找找 ,谢谢

支持(0) 反对(0) -忘川- | 园豆:23 (初学一级) | 2016-11-04 16:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册