[英]SQL order a result set based on a column value
我正在使用mysql,有沒有一種方法可以根據列的值對結果集進行排序。
我希望行位於結果的結尾或開頭,其中
col = 'SOMEVALUE'
如果我的問題不清楚,請考慮以下情形:
我有一個surveys
表,其中有一個status
列,我想獲取所有調查,但是status = 'Expired'
必須在結果集的末尾。
是否有執行此操作的SQL
方法? 還是檢索后需要手動對結果進行排序?
您可以按order by
使用表達式。 在MySQL中,這特別簡單:
order by (status = 'Expired') asc, -- put status at the end
status -- or however you want the rows ordered.
這是可行的,因為MySQL在數字上下文中將布爾表達式視為數字,其中1表示“ true”,0表示“ false”。
如果您有更多的列值,則可以在排序中使用case
。
或者您也可以使用它。
CREATE TABLE kaka
(
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
col_2 VARCHAR(200)
);
INSERT INTO kaka(col_2) VALUES
('a'),
('v'),
('x'),
('aa')
SELECT col_2, CASE col_2 WHEN 'x' THEN 1 WHEN 'aa' THEN 2 WHEN 'v' THEN 3 ELSE 4 END sort
FROM kaka
ORDER BY sort
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.