簡體   English   中英

如何使MYSQL查詢結果ORDER BY條件順序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM