您的位置:首页 > 数据库 > MySQL

【mysql】find_in_set 和 in 混合使用查询数据紊乱

2016-12-20 11:00 549 查看
1 最开始使用的方法

select u.ID, u.NAME FROM sys_user u WHERE ID
IN ( SELECT o.UID_ FROM sys_user_organization o
WHERE o.OID IN ( SELECT ID FROM sys_organization
WHERE FIND_IN_SET( ID, getChildLst ( '40280049586bcacd01586c0278530314')))) AND u.DEL = 0


期待结果



实际结果



2 根据发现,该函数中双in子句下面还嵌套了一个find_in_set子句,所以查询出来的数据是多的。

但是如果将子句一个个拆出来执行,每一个单句结果都是正确的。因此,想到了可能是in和find_in_set混合使用导致的问题

3 修改后的查询语句

select u.ID, u.NAME FROM sys_user u WHERE ID
IN ( SELECT o.UID_ FROM sys_user_organization o
WHERE FIND_IN_SET (o.OID,( SELECT ID FROM sys_organization
WHERE FIND_IN_SET( ID, getChildLst ( '40280049586bcacd01586c0278530314'))))) AND u.DEL = 0


将中间的in改为find_in_set,则结果正常显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: