【问题标题】:How to detect duplicate values in array of objects php如何检测对象数组中的重复值php
【发布时间】:2018-05-25 12:23:51
【问题描述】:

我有这个代码:

 $policy_id = $wpdb->get_results($wpdb->prepare("SELECT meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 203, $row->id));

我如何检查是否有重复的值?

【问题讨论】:

  • 使用GROUPY BY meta_valueCOUNT(meta_value)
  • 您是要消除结果集中的重复项,还是要查找重复项(基于@Philipp 建议的某种分组),并对此采取一些措施?使用一点子选择或 HAVING 子句,您可以找到具有 2 个或更多实例(重复)的记录并忽略其余的。如果我对最终目标有更多了解,我相信可以得到更集中的答案。

标签: php wordpress duplicates


【解决方案1】:

在检索数据后不要检查重复项,您可以要求 mysql 不给您重复项:

SELECT DISTINCT meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s

【讨论】:

    【解决方案2】:

    根据您(不是很清楚..)的需求,有多种解决方案。

    如果您只想知道单个元值出现的频率,您可以使用GROUP BY meta_value

    SELECT
        meta_value, COUNT(meta_value) as count
    FROM wp_frm_item_metas 
    WHERE field_id=%d AND item_id=%s
    GROUP BY meta_value
    

    结果你会得到两列meta_valuecount(包含meta_value的计数)

    如果您只想要多次出现的meta_values,您可以使用HAVING 扩展查询

    SELECT
        meta_value, COUNT(meta_value) as count
    FROM wp_frm_item_metas 
    WHERE field_id=%d AND item_id=%s
    GROUP BY meta_value
    HAVING count(meta_value) > 1
    

    如果你只想要唯一的元值,你也可以使用DISTINCT,而不是GROUP BY

    SELECT
        DISTINCT meta_value
    FROM wp_frm_item_metas 
    WHERE field_id=%d AND item_id=%s
    

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多