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

複数の属性とvalue_idを検索するためのMySQLクエリ

    GROUP BYを使用する必要があるようです およびHAVING 条項。

    SELECT
        `product_id`,
        COUNT (`primary_key_id`) AS `attr_count` /* primary key field here */
    FROM `products_attr_val`
    WHERE
       (`attr_id` = ? AND `value_id` = ?)
       OR (`attr_id` = ? AND `value_id` = ?)
       /* additional as necessary
       OR (`attr_id` = ? AND `value_id` = ?)
       */
    GROUP BY `product_id`
    HAVING `attr_count` = ? /* value here should be equal to number of attributes you are checking for */
    

    product_id全体で一意のインデックスがあることを確認してください およびattr_id これが正しく機能するためには(製品が同じattr_idを持つ複数のレコードを持つことはおそらく意味がないため、すでにこれを持っているはずです。 。

    また、SQLで使用するために値をエスケープしていない場合は、エスケープしていることを確認する必要があります。ここでは、これらの変数を?で示しています。 これは、プリペアドステートメントを使用している場合、このSQLを作成する方法になります。




    1. PHP Webアプリケーション:mysqlデータベース設計のベストプラクティスに関する質問

    2. JOOQを使用してPostgreSQLにJSON列を含む更新可能なレコードを挿入するにはどうすればよいですか?

    3. MySQL LOAD DATA INFILE:動作しますが、予測できないラインターミネータ

    4. TSQLで分数をhh:mm形式に変換するにはどうすればよいですか?