sql用inner join内关联查询有多条记录一样只取一条?

如图,当item_id相等的时候就取def_sup_flag=1的记录。无法绑定由多个部分组成的标识符"b.item_id"。... 如图,当item_id相等的时候就取def_sup_flag=1的记录。
无法绑定由多个部分组成的标识符 "b.item_id"。
展开
 我来答
帐号已注销
2018-03-31 · TA获得超过1.2万个赞
知道小有建树答主
回答量:67
采纳率:100%
帮助的人:1.4万
展开全部

级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名,设置了别名就OK了。

解决办法:

1.一对多不能用Association,要用Collection:根据经验,使用association这个元素很容易出错,建议在resultMap中先换一种写法,不要用association。

2.修改测试一下,如果成功的话,就基本可以去顶是association的问题了,之后查一下association详细资料,应该能解决。如果不是association的问题,就调查一下配置文件等等,总能够解决的。

3.resultMap配置有问题:发现问题的关键在于resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。

匿名用户
推荐于2017-12-15
展开全部
SELECT MIN(B.flow_id),A.item_ID FROM Test_Table A INNER JOIN Test_Table B ON A.Flow_ID!=B.Flow_ID AND A.Item_ID=B.Item_ID WHERE A.def_sup_flag=1 GROUP BY A.item_ID
--应该是这样写吧

--不过我觉得你是要实现的功能是不是,def_sup_flag等于1,如果item_id相同就取第一条记录
SELECT T.* FROM Test_Table T 
INNER JOIN (
    SELECT MIN(flow_id) flow_id FROM Test_Table 
    WHERE def_sup_flag=1 GROUP BY item_id) T2 
    ON T.flow_id=T2.flow_id
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式