[英]How to make MYSQL query results ORDER BY conditions order?
我的查询字符串如下:
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
对于结果,我想,以满足项目condition1
首先被退回,则符合项condition2
,最后符合项condition3
。 有任何想法吗?
要按所需顺序进行排序,请在ORDER BY中使用条件,但在它们之后使用DESC
。
SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 DESC,
condition2 DESC,
condition3 DESC
如果这不起作用,因为您的查询更复杂,那么您可以使用布尔逻辑将您的查询(A OR B OR C) AND D
更改为(A AND D) OR (B AND D) OR (C AND D)
那么你可以使用以下查询:
SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 AND static DESC,
condition2 AND static DESC,
condition3 AND static DESC
这里不需要AND static
,因为所有行都返回它,但是在一个更复杂的例子中(你也返回一些非静态的行),你必须以这种方式去做。
这应该工作:
ORDER BY condition1, condition2, condition3
例如
ORDER BY (weight > 500), (height > 3), (height < 2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.