是否是参数类型不符合
(select dept_name from `sns`.sy_dept where id=document_number) as date_birth这一句是后来加上去的,加上去后就这样了,
@流沙°: 你这个document_number到底会有几个值啊
@流沙°: 返回多个值?
@laugher_ccc: 只有一个
@风归云隐:
这是在workbench里可以运行
@流沙°: select dept_name from `sns`.sy_dept where id=document_number 这里面的id 是sy_dept表的id还是哪里的? 怎么没看出sy_dept 和sy_users 的关联关系
@laugher_ccc: id是sy_dept的主键,sy_user中的document_number 就是sy_dept的id
@流沙°: 那你不能这么写
@laugher_ccc: 应该怎么写?
@流沙°:
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: 还是报一样的错
@流沙°: 这几条语句在workbench里都可以运行,一放到mybatis的xml文件中就报错
@流沙°: 截图xml看一眼
WHERE 子句不用接括号吧,还有看错误好像说你的数据源配置是不是有问题
(select dept_name from `sns`.sy_dept where id=document_number) as date_birth 问题应该出在这一段,没加这一段之前没问题,加了就报错
@流沙°: 就觉得你这个语句写的很奇怪,最后有一个document_number in,然后这里又有个 where id=document_number,干嘛不直接把两个表inner join起来查??
@流沙°:
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 ( ? , ? , ? )
试试这个
@风归云隐: 奇怪了,在workbench里可以运行
@流沙°: 你这个图里面的(select dept_name from sns.sy_dept where id=dept_id)跟你上面贴出来不一样,这里是id=dept_id,上面贴出来的是id=document_number
@风归云隐: 这两个字段是一样的
@流沙°: 用你写的那个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
]
@流沙°: 我这个语句没有测试,只是个思路,具体你自己修改一下
@风归云隐: 你这个在workbench里面也可以用,但是放到mybatis的xml文件里面也报错了
@流沙°: 那就说明不是sql语句本身的问题,肯定是你后台程序哪里不对,仔细一步一步调试吧
@风归云隐: 我再找找 ,谢谢