sql >> Database >  >> RDS >> Mysql

Meedoen en meerdere en voorwaarden

U moet een combinatie van IN() . gebruiken en GROUP BY ... HAVING om dit te behalen. Ook is een lidmaatschap niet nodig als je alleen gebruikers-ID's nodig hebt. Dus zoiets als:

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 */

Als u gebruikers-ID's en namen nodig heeft, kunt u deze recordset, afgeleid van de bovenstaande query, als filter toevoegen aan de gebruikerstabel:

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. Hoe pgBackRest te gebruiken om een ​​back-up te maken van PostgreSQL en TimescaleDB

  2. Hoe een varchar-kolom te splitsen als meerdere waarden in SQL?

  3. Proberen om INSERT te krijgen om alleen nieuwe gegevens in te voegen

  4. Een aanhoudende tijdelijke tafel?