2017-12-11 1 views
0
php

ich habe diesen Code:Wie doppelte Werte in Array von Objekten erkennen

$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)); 

, wie ich überprüfen kann, ist es ein doppelter Wert?

+1

Verwenden 'Groupy BY meta_value' und COUNT (meta_value)' – Philipp

+1

Sind Sie versuchen, Duplikate in der Ergebnismenge zu beseitigen, oder versuchen Sie, Duplikate zu finden (basierend auf einer Art Gruppierung als @Philipp vorgeschlagen), und etwas unternehmen? Unter Verwendung einer kleinen Unterauswahl- oder HAVING-Klausel können Sie Datensätze finden, die 2 oder mehr Instanzen (Duplikate) haben, und den Rest ignorieren. Wenn ich mehr darüber weiß, was das Endziel ist, bin ich sicher, dass eine genauere Antwort gefunden werden kann. – DDeMartini

Antwort

0

Anstatt für Duplikatsprüfung nach der Analyse der Daten, können Sie mysql fragen Sie keine Duplikate geben:

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

Es gibt mehrere Lösungen, basierend auf dem (nicht ganz klar ..) benötigt. Wenn Sie nur wissen möchten, wie oft ein einzelner Metawert auftritt, können Sie GROUP BY meta_value verwenden.

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 

Wie führen Sie zwei Spalten erhalten meta_value und count (die Zählung Vorkommen von meta_value enthält)

Wenn Sie nur meta_values wollen, die mehrfach auftreten, können Sie die Abfrage mit HAVING

verlängern
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 

Und wenn Sie nur eindeutige meta_values ​​möchten, können Sie auch DISTINCT statt GROUP BY

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