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

Присъединете се и множество и условия

Ще трябва да използвате комбинация от IN() и GROUP BY ... HAVING за да постигнем това. Също така няма нужда от присъединяване, ако всичко, от което се нуждаете, е потребителски идентификатор. Така че нещо като:

SELECT user, COUNT(attribute) AS attribute_count
FROM attributes
WHERE attribute IN(...) /* include your set of attributes here */
GROUP BY user
HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */

Ако имате нужда от потребителски идентификатори и имена, можете просто да се присъедините към този набор от записи, извлечен от заявката по-горе като филтър към таблицата с потребители:

SELECT user.id, user.name
FROM user
INNER JOIN
  (
    SELECT user, COUNT(attribute) AS attribute_count
    FROM attributes
    WHERE attribute IN(...) /* include your set of attributes here */
    GROUP BY user
    HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */
  ) AS filter
  ON user.id = filter.user


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-ефективният начин за вмъкване на редове в MySQL база данни

  2. Как извличате числова стойност от низ в MySQL заявка?

  3. не може да се свърже с mysql docker от локално

  4. Съхранение на множество данни в квадратчетата за отметка в MySQL база данни с PHP

  5. executemany за MySQLdb грешка за голям брой редове