2017-06-14 6 views
0

ich diese Werte in einer Tabelle namens Anzeigen:Ignorieren doppelte Einträge in MySQL select DISTINCT Schlüsselwort

id   sitecatid  locationid 
1    12   3 
2    12   6 
3    12   8 
4    12   8 
5    12   8 
6    10   18 
7    13   20 
8    14   21 

Ich möchte die Ergebnisse wie folgt zurück:

sitecatid  locationid 
    12   3 
    10   6 
    13   8 
    14   18 
        20 
        21 

Grundsätzlich möchte ich nur die erste Instanz eines Datensatzes mit einem eindeutigen Site-Catid und locationid.

UPDATE:

ich diese Abfrage versucht, aber das Ergebnis nicht korrekt:

SELECT DISTINCT sitecatid, locationid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

Ergebnis für die obige Abfrage:

sitecatid  locationid 
    12   3 
    12   6 
    12   8 
    10   18 
    14   20 
    13   21 

UPDATE:

kann ich Schlepptau Abfrage One für sitecatid verwenden und secend für locationid wie:

SELECT DISTINCT sitecatid 
     FROM advertisements 
     WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

UND

SELECT DISTINCT locationid 
     FROM advertisements 
     WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

aber ich will für diese beiden

+0

ich nicht Ihr Sortierungsmuster erhalten überhaupt – WhatsThePoint

+0

dies ist meine Abfrage: SELECT * FROM Anzeigen WHERE MATCH (sitetitle, Seitenbeschreibung) AGAINST ('$ q' IN BOOLEAN MODE) und Status = 'genehmigt' –

+2

Ich denke, es ist nicht möglich, weil 'Zeile 6' der gegebenen Tabelle nur statische '10' und locationid' 18' enthält, aber Sie bitten, den Wert sitecatid '10' von' Zeile6' und loctionid '6' von' Zeile anzuzeigen 2 'in einer einzigen' Zeile '(dh Sie wollen zwei verschiedene Zeilenwerte in einer Zeile anzeigen) – Srini

Antwort

0

Die einzige Art, wie ich eine Abfrage verwenden, sehen Dies erreichen Sie, indem Sie die Daten in einer Spalte abrufen, nicht in zwei, da Sie versuchen, Werte aus verschiedenen Datensätzen nacheinander zu erhalten, was meiner Meinung nach nicht möglich ist.

SELECT 'SITECATID' UNION 
SELECT DISTINCT sitecatid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' UNION 
SELECT 'LOCATIONID' UNION 
SELECT DISTINCT locationid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved'; 
+0

danke, aber das funktioniert nicht –

+0

@ebrahimbabavand, könnten Sie es ausarbeiten? Ich habe Ihre Abfragen nur geantwortet und jedem einen Literal-Header zugewiesen. – jzeta

+0

das funktioniert jetzt im mit dieser Abfrage '$ get =" SELECT *, sitecatid, COUNT (*) als Anzahl von Anzeigen WHERE MATCH (siteite, SiteDescription) GEGRÜNDET ('$ q' im BOOLEAN-Modus) UND Status = 'genehmigt' GROUP BY sitecatid ";' '$ get =" SELECT *, LocationID, COUNT (*) als Graf von Werbung WHERE MATCH (sitetitle, Seitenbeschreibung) AGAINST ('$ q' IN BOOLEAN MODE) UND status = 'genehmigt' GROUP BY locationid ";' –

Verwandte Themen