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

サブクエリに2つの「WHERENOTIN」があるLaravelEloquent

    以下に示すように、3つの異なるクエリを実行する代わりに使用できます

    DB::table('delivery_sap')
    ->whereNotIn('cust', function ($query) {
            $query->select('cust_name')->from('customer');
        })
    ->whereNotIn('cust_no', function ($query) {
            $query->select('cust_code')->from('customer');
        })
    ->select('cust', 'cust_no')
    ->distinct('cust')
    ->get();
    

    このコードは、質問で尋ねられるのとまったく同じクエリを提供します。クエリを確認するには、次のコードを使用します

    DB::table('delivery_sap')
    ->whereNotIn('cust', function ($query) {
            $query->select('cust_name')->from('customer');
        })
    ->whereNotIn('cust_no', function ($query) {
            $query->select('cust_code')->from('customer');
        })
    ->select('cust', 'cust_no')
    ->distinct('cust')
    ->toSql();
    

    出力は、

    になります
    select distinct `cust`, `cust_no` from `delivery_sap` 
    where `cust` not in (select `cust_name` from `customer`) 
    and `cust_no` not in (select `cust_code` from `customer`)
    


    1. 重複キーでのInnoDBの自動インクリメントを防止します

    2. Mysql結合は重複する行を提供します

    3. ドメインの代わりにローカルホストでMySQLを接続/使用する方が速いですか(ドメインが同じコンピューターに解決される場合でも)?

    4. SQL Server FOR JSON PATHの例(T-SQL)