sql >> データベース >  >> RDS >> Mysql

参加して複数の条件

    IN()を組み合わせて使用​​する必要があります およびGROUP BY ... HAVING これを達成するために。また、必要なのがユーザーIDだけであれば、参加する必要はありません。つまり、次のようなものです:

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

    ユーザーIDと名前が必要な場合は、上記のクエリから派生したこのレコードセットをフィルターとしてusersテーブルに結合するだけです。

    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. mysqlコマンドDELIMITERの実行方法

    2. Oracleの数値関数(全リスト)

    3. SQLServerでのROLLBACKTRUNCATE

    4. MySQLクエリキャッシング:最大キャッシュサイズは128 MBに制限されていますか?