sql >> Databasteknik >  >> RDS >> Mysql

Gå med och multipla och villkor

Du måste använda en kombination av IN() och GROUP BY ... HAVING för att uppnå detta. Du behöver inte heller gå med om allt du behöver är användar-ID. Så något i stil med:

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

Om du behöver användar-id:n och namn kan du helt enkelt gå med i denna postuppsättning som härrör från frågan ovan som ett filter till användartabellen:

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. Hitta nästa månad för ett givet datum i mysql

  2. Ändra alla tabeller i databasen

  3. Kopiera en MySQL-tabell inklusive index

  4. MySQL gå med i where-klausulen