先傳回具有特定值的行
問題:
您希望擷取資料從表中,優先考慮特定列中包含特定值的行。其餘行應基於另一列按字母順序排列。
考慮具有以下結構的範例表 Users:
id | name | city |
---|---|---|
1 | George | Seattle |
2 | Sam | Miami |
3 | John | New York |
4 | Amy | New York |
5 | Eric | Chicago |
6 | Nick | New York |
解:
要根據特定值確定行的優先順序並按字母順序排列剩餘行,請使用以下命令查詢:
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
解釋:
CASE 表達式將優先權值1 指派給城市列與指定值(「紐約」)相符的行所有其他行的優先權值為2。這可確保包含「New York」的行首先出現在結果集中。
ORDER BY 子句的第二部分,城市,根據城市列進一步按字母順序對每個優先權組內的行進行排序。
此查詢將傳回以下結果:
id | name | city |
---|---|---|
3 | John | New York |
4 | Amy | New York |
6 | Nick | New York |
1 | George | Seattle |
2 | Sam | Miami |
5 | Eric | Chicago |
以上是如何在 SQL 中對具有特定值的行進行優先排序然後按字母順序排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!