zoukankan      html  css  js  c++  java
  • 用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

  • 相关阅读:
    RabbitMQ知识梳理
    feign.FeignException: status 400 reading
    rabbitmq监控之消息确认ack
    Docker 安装redis mysql rabbitmq
    linux搭建GitLab
    杀死服务进程并重新启动,同时监听日志打印
    MySQL数据库连接报错
    idea: unable to import maven project
    线程池ThreadPool实战
    【2-SAT】URAL
  • 原文地址:https://www.cnblogs.com/wangkongming/p/7486693.html
Copyright © 2011-2022 走看看