一、问题描述
将数据写入Excel时,SQL语句过长无法执行
Error infomation:
ERROR: stack depth limit exceeded HINT: Increase the configuration parameter “max_stack_depth” (currently 2048kB), after ensuring the platform’s stack depth limit is adequate.
sql 语法过长导致超过堆栈深度无法执行
二、问题分析
SQL语句因为 where查询子句 中元素太多导致SQL语句过长,堆栈深度不够
select * from table_name where user_id='1' or user_id='2' or user_id='3' or user_id='4' or ...
三、解决方案
1.SQL语句因为 where查询子句 中 or 逻辑语句太多,可以改为 in
select * from table_name where user_id in('1','2','3', ... );
缺点:
(1)如果查询数据更多,还是会出现错误。
(2)有些数据库语言 in 中的元素会有1000的数量限制
2.分批次捞取in的元素,进行SQL查询,再将查询的结果集进行合并
//使用PHP描述in的元素内容: