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

MySQLクエリを作成します(meta_key / meta_valueテーブル)

    group byを使用してこれらにアプローチするのが好きです およびhaving

    select id
    from t
    where (meta_key = 'color' and meta_value = 'red') or
          (meta_key = 'price' and meta_value = '10')
    group by id
    having count(distinct meta_key) = 2;
    

    別の方法は、joinです。 。 idに重複する値がない場合 :

    select id
    from t tc join
         t tp
         on tc.id = tp.id and
            tc.meta_key = 'color' and tc.meta_value = 'red' and
            tp.meta_key = 'price' and tp.meta_value = '10';
    

    group by メソッドには、スケーラビリティと表現力の利点があります。単純な平等ではない多くの条件(色は赤ではなく、米国または中国で製造されています)を簡単に表現できます。また、追加の条件のパフォーマンスは非常に似ています。

    2つ目は、いくつかの条件で(適切なインデックスを使用して)パフォーマンスが向上する可能性があります。




    1. PostgresQLを使用したランニングカウントの合計

    2. MySQL Workbench-スキーマはデータベースと同じものですか?

    3. 同じアクセス方法でデッドロックが発生する可能性はありますか?

    4. OracleのSIN()関数