sql >> Database >  >> RDS >> Mysql

Hoe kan ik twee voorwaarden maken in het hebben van een clausule?

Zoals gedocumenteerd onder SELECT Syntaxis:

Met andere woorden, het wordt na . toegepast de groeperingsoperatie is uitgevoerd (in tegenstelling tot WHERE , die vóór . wordt uitgevoerd elke groeperingshandeling). Zie WAAR vs. HAVING .

Daarom vormt uw huidige zoekopdracht eerst de resultatenset van het volgende:

SELECT   COUNT(domain) AS `sum domains`, file
FROM     `table`
GROUP BY Number

Bekijk het op sqlfiddle :

| SUM DOMAINS |      FILE |
---------------------------
|           2 | aaa.com_1 |
|           2 | bbb.com_1 |
|           1 | eee.com_1 |

Zoals u kunt zien, zijn de geselecteerde waarden voor het file kolom zijn slechts een van de waarden van elke groep, zoals gedocumenteerd onder MySQL Uitbreidingen op GROUP BY :

Uw huidige zoekopdracht gaat vervolgens verder met het filteren van deze resultaten op basis van uw HAVING clausule:

HAVING   COUNT(Number) > 1 AND file LIKE '%\_1'

Met de waarden van file hierboven geselecteerd, komt elke afzonderlijke groep overeen met het tweede criterium; en de eerste twee groepen komen overeen op het eerste criterium. Daarom de resultaten van de volledige zoekopdracht zijn:

| SUM DOMAINS |      FILE |
---------------------------
|           2 | aaa.com_1 |
|           2 | bbb.com_1 |

Naar aanleiding van je bovenstaande opmerkingen , u wilt de records filteren op file voor groeperen en filter vervolgens de resulterende groepen op groepen die meer dan één overeenkomst bevatten. Gebruik daarom WHERE en HAVING respectievelijk (en selecteer Number in plaats van file om elke groep te identificeren):

SELECT   Number, COUNT(*) AS `sum domains`
FROM     `table`
WHERE    file LIKE '%\_1'
GROUP BY Number
HAVING   `sum domains` > 1

Bekijk het op sqlfiddle :

| NUMBER | SUM DOMAINS |
------------------------
|    222 |           2 |


  1. Combineer groeperen op en tel mysql

  2. Een query-time-out forceren in SQL Server

  3. EEE MMM dd HH:mm:ss ZZZ jjjj datumnotatie naar java.sql.Datum

  4. Nieuwe stuurprogramma's voor SQL Server... Wat u moet weten