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

クエリビルダー:複合列を持つIN句

    AFAICTこれは、配列構文または通常の比較式を使用して(まだ)不可能です。変換を担当するコードは、単一フィールドとフラット配列のみを処理します。

    を参照してください。

    ソース>\Cake \ Database \ Expression \ Compareson ::_ stringExpression()

    ただし、これは、タプルのセットをすぐに処理できるようにするタプル比較式を使用すると非常に可能です。内部的には、複合キーを処理するためにアソシエーションによって使用されます。

    $fields = ['order_date', 'order_number'];
    $types = ['date', 'integer'];
    $values = [
        ['2016-03-11', 3455453], 
        ['2016-03-18', 83545454], 
        ['2016-06-17', 5354544]
    ];
    
    $query->where(
        new \Cake\Database\Expression\TupleComparison($fields, $values, $types, 'IN')
    );
    

    ソース>\Cake \ Database \ Expression \ TupleComparison




    1. mysqlの単一のクエリで子カテゴリの親名を取得する

    2. SQLの「AND」または「OR」が最初に来ますか?

    3. MySQLで月の2つの日付の差を計算する方法

    4. 大きな主キー:10億行以上のMySQL + InnoDB?