My query string is like:
SELECT ... FROM maintable
LEFT JOIN table1 on (maintable.id = table1.idx)
LEFT JOIN table2 on (table1.idy = table2.idy)
LEFT JOIN table3 on (table2.idz = table3.idz)
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
//condition1 & condition2 & condition3 are kind of
table3.idz = 101, table3.idz = 3, maintable.id IN (1,2,3,4), and so on
For the results I want entries that meet condition1 to be returned first, then entries that meet condition2, and finally entries that meet condition3. Any ideas?
To get the sorting in the order you want, use your conditions in the ORDER BY, but use
DESCafter them.If this doesn’t work because your query is more complex, then you can use boolean logic to change your query
(A OR B OR C) AND Dinto(A AND D) OR (B AND D) OR (C AND D)then you can use the following query:The
AND staticis not necessary here because all rows return it, but in a more complex example (where you also return some rows which are not static) then you would have to do it in this way.