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

SQLの相互に排他的な値

    あなたの質問を正しく理解していれば、products テーブルにはデフォルトの価格とproduct_pricesがあります テーブルには他の価格があります。

    デフォルト価格が使用されている場所、つまり他の価格がない場所を知りたいとします。これには、left outer joinを使用します :

    SELECT p.*, coalesce(pp.price, p.default_price)
    FROM products p LEFT OUTER JOIN 
         products_prices pp
         ON p.id = pp.productId
    WHERE pp.price = GIVENPRICE or pp.price is null
    

    コメントに基づいて、ビジネスIDがNULLのレコードにデフォルトの価格を保存しています。この場合、価格表に2つの結合を行います。

    SELECT p.*, coalesce(pp.price, defpp.price)
    FROM products p LEFT OUTER JOIN 
         products_prices pp
         ON p.id = pp.productId and pp.price = GIVENPRICE left outer join
         products_prices defpp
         on p.id = defpp.productId and defpp.businessId is NULL
    

    最初の結合は、指定された価格に一致する価格を取得します。 2番目はデフォルト価格を取得します。最初の結果が存在する場合はそれが使用され、存在しない場合は2番目の結果が使用されます。




    1. MySQL LEFTJOIN3テーブル

    2. VARCHAR列への挿入時にCHARデータを自動的にトリミングする

    3. MySQLサーバーは--secure-file-privオプションで実行されているため、Macでこのステートメントを実行できません。

    4. このポリゴンオブジェクトはそれ自体を閉じます。この挿入がエラー3037:無効なGISデータでまだ失敗するのはなぜですか?