发现 mysql in子句存在乱序问题。
select id from auth_user where id in(131482, 48, 801, 238640)
因为 mysql默认会按照id排序,上面这段查询执行的结果是:
+--------+
| id |
+--------+
| 48 |
| 801 |
| 1795 |
| 7616 |
| 11502 |
| 13420 |
| 16475 |
| 24820 |
这个结果明显不是我们想要的, 可以通过mysql的FIELD函数来解决这个问题
select id from auth_user where id in(131482, 48, 801, 238640)ORDER BY FIELD(id,131482, 48, 801, 238640);