Edw*_*ard 21 mysql sql-order-by
我的查询字符串如下:
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
Run Code Online (Sandbox Code Playgroud)
对于结果,我希望condition1首先返回满足的条目,然后是满足的condition2条目,最后是满足的条目condition3.有任何想法吗?
Mar*_*ers 30
要按照您想要的顺序进行排序,请在ORDER BY中使用您的条件,但DESC在它们之后使用.
SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 DESC,
condition2 DESC,
condition3 DESC
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,因为您的查询更复杂,那么您可以使用布尔逻辑将您的查询更改(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
Run Code Online (Sandbox Code Playgroud)
在AND static这里是没有必要的,因为所有的行返回,但在更复杂的例子(在这里你也可以返回一些行这不是静态的),那么你就必须这样做,在这种方式.
这应该工作:
ORDER BY condition1, condition2, condition3
Run Code Online (Sandbox Code Playgroud)
例如
ORDER BY (weight > 500), (height > 3), (height < 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25968 次 |
| 最近记录: |