【mysql】find_in_set 和 in 混合使用查询数据紊乱
2016-12-20 11:00
549 查看
1 最开始使用的方法
期待结果
实际结果
2 根据发现,该函数中双in子句下面还嵌套了一个find_in_set子句,所以查询出来的数据是多的。
但是如果将子句一个个拆出来执行,每一个单句结果都是正确的。因此,想到了可能是in和find_in_set混合使用导致的问题
3 修改后的查询语句
将中间的in改为find_in_set,则结果正常显示
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,则结果正常显示
相关文章推荐
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
- Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
- mysql之使用find_in_set和group_concat组合递归函数时数据不全
- MySQL查询中 find_in_set 在使用中可能遇到的问题
- mysql 按年度、季度、月度、周、日SQL统计查询,mysql 存储过程 中 in 和 FIND_IN_SET 传递多个参数的使用
- MySql的FIND_IN_SET()查询函数的使用
- Mysql中的find_in_set的使用方法介绍
- mysql中FIND_IN_SET的使用方法
- mysql中FIND_IN_SET的使用方法
- [Mysql] find_in_set()使用注意
- mysql中 find_in_set()函数的使用
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法find_in_set
- mysql:find_in_set 查找逗号分隔的数据
- mysql中FIND_IN_SET的使用方法
- Mysql中的find_in_set的使用方法介绍
- Mysql中in和find_in_set的使用说明
- mysql中的 IN和FIND_IN_SET的查询问题
- Mysql中的find_in_set的使用方法