Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да направя две условия в клауза за наличие

Както е документирано под SELECT Синтаксис:

С други думи, прилага се след операцията по групиране е извършена (за разлика от WHERE , което се изпълнява преди всяка операция по групиране). Вижте WHERE срещу HAVING .

Следователно, текущата ви заявка първо формира набора от резултати от следното:

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

Вижте го на sqlfiddle :

<пред>| СУМ ДОМЕЙНИ | ФАЙЛ |-------------------------| 2 | aaa.com_1 || 2 | bbb.com_1 || 1 | eee.com_1 |

Както можете да видите, избраните стойности за file колоната са само една от стойностите от всяка група - както е документирано в MySQL Разширения за GROUP BY :

След това текущата ви заявка продължава да филтрира тези резултати според вашия HAVING клауза:

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

Със стойностите на file избрани по-горе, всяка отделна група отговаря на втория критерий; и първите две групи съвпадат по първия критерий. Следователно резултатите от пълната заявка са:

<пред>| СУМ ДОМЕЙНИ | ФАЙЛ |-------------------------| 2 | aaa.com_1 || 2 | bbb.com_1 |

Следвайки коментарите си по-горе , искате да филтрирате записите в file преди групиране и след това филтрирайте получените групи за тези, които съдържат повече от едно съвпадение. Затова използвайте WHERE и HAVING съответно (и изберете Number вместо file за идентифициране на всяка група):

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

Вижте го на sqlfiddle :

<пред>| НОМЕР | СУМА ДОМЕЙНИ |-----------------------| 222 | 2 |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NodeJS отговори, че часовата зона на MySQL е различна, когато извличам директно от MySQL

  2. Как да направите заявка към тази MySQL таблица по най-ефективния начин?

  3. Как да добавя условия в подподподчинените дъщерни модели в sequelize, които трябва да повлияят на моя родителски модел в findAndCountAll?

  4. Има ли начин да се запита дали полето на масива съдържа определена стойност в Doctrine2?

  5. Защо текстовата колона не може да има стойност по подразбиране в MySQL?