封装sql语句中in限制查询个数的方法
时间:2021-07-01 10:21:17
帮助过:3人阅读
* 此方法用于每天凌晨取前一天的回滚用户账号
*/
public function getRollBackAccount(
$startTime,
$endTime){
//1.首先查询出当天的新增的用户账号
$sql_account = "SELECT DISTINCT `accountName`,`mTime` FROM `t_log_register` WHERE `mTime`>=‘{
$startTime}‘ AND `mTime`<=‘{
$endTime}‘"
;
$day_account = fetchRowSet(
$sql_account);
foreach (
$day_account as $key =>
$account) {
$arr[] =
$account[‘accountName‘
];
}
// 统计回滚用户的时间范围限制两个月内
//$two_months_before_time = strtotime(date("Y-m-d", strtotime("-2 month")));
$now_end_time =
$endTime-86400
;
// 批量查询限制
$count_account =
count(
$arr);
$base = 10
;
$group =
floor(
$count_account /
$base);
for (
$i=0;
$i <=
$group;
$i++
) {
echo ‘<br>group: ‘ .
$i . "<br>"
;
$group_account = ‘‘
;
for (
$j=0;
$j <
$base;
$j++
) {
$key =
$i *
$base +
$j;
if(
$key <
$count_account) {
$group_account .= "‘" .
$arr[
$key] . "‘,"
;
}
}
$group_account =
rtrim(
$group_account, ‘,‘
);
$sql_all_account = "SELECT DISTINCT `accountName`,`agentId`,`serverId`,`platform`,`mTime` FROM `t_log_register` WHERE `accountName` in ({
$group_account}) AND `mTime` < ‘{
$now_end_time}‘ "
;
$all_account = fetchRowSet(
$sql_all_account);
if(!
empty(
$all_account)){
break;
}
}
$arr_account =
array();
foreach (
$all_account as $key =>
$before_account) {
$arr_account[
$key][‘agentId‘] =
$before_account[‘agentId‘
];
$arr_account[
$key][‘serverId‘] =
$before_account[‘serverId‘
];
$arr_account[
$key][‘platform‘] =
$before_account[‘platform‘
];
$arr_account[
$key][‘accountName‘] =
$before_account[‘accountName‘
];
$arr_account[
$key][‘mTime‘] =
$before_account[‘mTime‘
];
}
return $arr_account;
}
封装sql语句中in限制查询个数的方法
标签:pre style ack cti function where tar back 方法