mysql - Conditional ordering with priority to a column -


i have table 4 columns:

  1. productid
  2. issponsored
  3. rank
  4. popularityscore

i want top 20 products ordered rank , popularityscore. rank considered if issponsored = 1. have tried using case in order by clause. like:

select productid producttable  order case when issponsored = 1 rank end asc, case when issponsored = 0 popularityscore end desc limit 20; 

the problem i'm facing is, since number of rows issponsored = 0 >> number of rows issponsored = 1 , limit 20, mysql fetches rows issponsored = 0 ordered popularityscore. want sponsored products ordered ranks , supplemented non sponsored products ordered popularity score.

try conditional logic on three:

order (issponsored = 1) desc,          (case when issponsored = 1 rank end) asc,          popularityscore desc; 

the first key expression on boolean: evaluates true (1) or false (0). removed case third key because redundant -- can put if like.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -