sql >> Databáze >  >> RDS >> Mysql

Spojit a více a podmínky

Budete muset použít kombinaci IN() a GROUP BY ... HAVING dosáhnout toho. Také není potřeba připojení, pokud vše, co potřebujete, je ID uživatele. Takže něco jako:

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

Pokud potřebujete ID a jména uživatelů, můžete jednoduše připojit tuto sadu záznamů odvozenou z výše uvedeného dotazu jako filtr do tabulky uživatelů:

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. manipulovat s DataGridView

  2. SQL – Převod datového typu varchar na datový typ datetime vedl k hodnotě mimo rozsah

  3. mysql SELECT nejlepší z každé kategorie v jedné tabulce

  4. Jak odstranit řádkování mezi řádky v Textarea?