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

MySQLヘルプ:価格<=20およびstatus='unpaid'までの顧客からのすべての注文を検索する方法

    ほぼ正確同じ質問にここで回答 。問題の顧客の現在の合計として機能する別の列が必要になることが前提です...

    私はあなたの結果とまったく同じようにテーブルとシミュレーションデータを作成し、あなたの正確な結果を思いつきました...問題はどういうわけかMySQLが行ごとに2回基準を適用していて、方法や理由を理解していなかったということでした...私はそのバグを強く疑っています、しかし、それを説明することはできません。とにかく、私は内部の「PreQuery」をベースとして強制し、@ SQLVarsを使用してそこからすべてのレコードを返し、そこからWHERE句を適用する修正があります...

    select properSummed.*
       from 
          ( select
                  o.orderid, 
                  o.price, 
                  @RunningTotal := @RunningTotal + o.price as UnpaidSoFar
               from
                  orders o, 
                  (select @RunningTotal := 0 ) sqlvars
               where o.ownerid = 1
                 and o.paymentstatus = 'unpaid' ) properSummed
        where 
           properSummed.UnpaidSoFar <= 50
    


    1. SQLServer2014の探索SELECTINTOParallelism

    2. DateTimeオブジェクトの異なるtimezone_types

    3. MariaDB CONNECTION_ID()の説明

    4. 認証されていないユーザーはMYSQLでどういう意味ですか?