SELECT 45, COUNT(0) FROM ac_dealer_sales ds WHERE ds.user_id in (SELECT du.user_id FROM ac_dept_user du WHERE du.is_main = 1 AND fun_get_team_id(du.dept_id)= 23)
把这个sql 拆为 一个 select count(*) from tab where id in ( selectd id from tab).
tab = ( create table tab as ( subquery) )
sub query 中 包含了 一个UDF fun_get_team_id( int) return int
结果与期望结果是一直的.
测试了4个版本。 5.5.9 5.6.32 5.7.26 8.0.19 发现这样的语句只有在5.5.9 上是正确的 如果 UDF 在 selectd * from tab where id in ( select * from tab where UDF() .... )