用distinct or array_unique
在 Mysql 获取数据时,如果想获取某一列去重数据,如果获取呢
举个例子:
advert_pro_ad 表
CREATE TABLE `advert_pro_ad` ( `advert_id` int(11) NOT NULL DEFAULT '0' COMMENT '广告id', `pro_id` int(11) NOT NULL DEFAULT '0' COMMENT '项目id', UNIQUE KEY `uniq_pro_aid` (`advert_id`,`pro_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '广告和广告项目关联表';
项目和广告是一对多的关系。如何获取去重之后的项目Id呢?
有三种办法
1,
select distinct(pro_id) from advert_pro_ad order by pro_id desc
2,
select pro_id from advert_pro_ad order by pro_id desc
把数据取出来之后,再用 array_unique 去重
3,
select pro_id from advert_pro_ad group by pro_id order by pro_id desc
建议使用第一种,使用第二种会有以下弊端
1、进程间IO通讯暴增。从mysql会向php传大量的数据。IO通讯是最影响速度的。
2、内存限制。PHP是内存操作。通常默认执行内存为128M,能处理的数据量只会大大小于128M.
除非改默认设置到较大值,加大内存开销。
3、效率较差。不仅从mysql到php有复制,而且array_unique效率也mysql DISTINCT差。
转自:https://stackoverflow.com/questions/19473869/select-distinct-or-array-unique
千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。