Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
289 views
in Technique[技术] by (71.8m points)

mysql - order by is not working properly with two fields

this is my select query i want to order by fetch record with two fields first and i want to order by with transType and after that with transDate i am already given order by with this two fields but it is not working.

i know that there is something silly mistake but i can not find it

SELECT tranjectionId,date_format(transDate,'%d-%m-%Y') AS transDate,motiAmount,
                              transType,tranjection.partyId,item.itemName,gwt,loss,netwet,
                              party.partyName,melting,westage,finewet,rhodium,amount,bhav 
                         FROM  tranjection
                       LEFT JOIN party ON party.partyId =  tranjection.partyId
                       LEFT JOIN item ON item.itemId =  tranjection.itemId
                        WHERE tranjection.partyId = $_REQUEST['partyId']
                        AND transDate   >= '$fromDate'
                        AND transDate   <= '$toDate'
                        ORDER BY  transType = 'I',
                         transDate
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

This is your order by:

ORDER BY  transType = 'I',
          transDate

The expression transType = 'I' is a boolean expression. When interpreted as an integer, "0" is false, and "1" is true. Hence, false values appear first in the sort, then true values.

You just want to sort descending:

ORDER BY  (transType = 'I') DESC,
          transDate

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...