You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从满足指定条件的数据库表中打印无重复记录?

解决重复记录只显示一次的两种方案

方案一:SQL层面直接去重(推荐)

数据库层面处理去重效率更高,根据你的需求分两种情况调整SQL:

1. 整行完全重复时用DISTINCT

直接在查询中添加DISTINCT关键字,数据库会自动返回不重复的记录:

$query = $this->db->query("select DISTINCT * 
from mytable 
where status = '1' and cityname= 'abuja' and age= '27' 
order by id ASC");

foreach ($query->result_array() as $rowx){ 
    echo $rowx['xxx'];
}

2. 特定字段重复即视为重复时用GROUP BY

如果只要某个字段(比如xxx)的值不重复,用GROUP BY按该字段分组,确保每个值只返回一条记录:

$query = $this->db->query("select * 
from mytable 
where status = '1' and cityname= 'abuja' and age= '27' 
group by xxx
order by id ASC");

foreach ($query->result_array() as $rowx){ 
    echo $rowx['xxx'];
}

方案二:PHP层面过滤重复项

如果无法修改SQL,可在PHP中记录已显示的内容,跳过重复项:

$shown_values = []; // 存储已经显示过的xxx字段值
$query = $this->db->query("select * 
from mytable 
where status = '1' and cityname= 'abuja' and age= '27' 
order by id ASC");

foreach ($query->result_array() as $rowx){ 
    $current_val = $rowx['xxx'];
    // 检查当前值是否已经显示过,没显示过才输出
    if (!in_array($current_val, $shown_values)) {
        echo $current_val;
        $shown_values[] = $current_val;
    }
}

你之前用break导致迭代终止,是因为break会直接结束整个循环,而上面的方法是跳过重复项,继续处理后续的记录。

内容的提问来源于stack exchange,提问作者Atsa'am

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:07:19