Lets say I have the following query.
SELECT stringdata FROM table ORDER BY FIELDS( stringdata, 'tg','nk','mg','pl') asc;
For some reason I’m getting the results at the very bottom. How can I get the query to put the results starting from ‘tg’ at row 1 rather than the last row in the results?
Not only that but there’s more than one ‘tg’ in the data, I’d like it to sort it in this expected output:
stringdata
__________
'tg'
'tg'
'tg'
'nk'
'nk'
'mg'
'mg'
'mg'
'pl'
So far using ORDER BY Fields() is only sorting one instance of the data rather than all.
Using desc instead of asc in the query works as expected. I get 'pl' on the first row, then 'mg', 'nk', etc.
Normally the
FIELDclause inORDER BYworks something likeSo in your query, the sorting took place as you mentioned and when you gave the
ASCit printed from the lowest_priority. So, for your case, if you wanttgat the top, you can either reorder the priority in theFIELDSor as you have already tried usedesc