代码拉取完成,页面将自动刷新
生成的sql语句 (省略了字段名)
SELECT ... FROM `表1` a_9 LEFT JOIN `表2` a_10 ON a_9.`xxx` = a_10.`yyy` WHERE a_9.`status` = ? AND (`name` LIKE ? OR `aaa` LIKE ? OR `bbb` LIKE ?)
报错:
Column 'name' in where clause is ambiguous
原因:
表1和表2里面都有name
这个字段, 而嵌套语句里的字段没有指定表别名 a_9 或 a_10, 希望修复
能提供构造语句的截图不,方便我复现场景
LeftQuery leftQuery = new LeftQuery()
.where.status().eq(1) // <-- 这句没问题, 可以正确给status字段指定表别名
.and(q -> q.where.name().like(searchDTO.getKeyword(), ObjectUtil::isNotEmpty).or.其它条件.end()) // <-- 这句嵌套没有给字段指定表别名
.end();
RightQuery rightQuery = new RightQuery()
.where.name().like(searchDTO.getDeptName(), ObjectUtil::isNotEmpty) // <-- 这句也没问题
.end();
return mapper.listPoJos(leftQuery.join(JoinType.LeftJoin, rightQuery)
.on(l -> l.where.rightId(), r -> r.where.id()).endJoin().build(),
map -> {
//省略mapFunction内容..
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论