簡體   English   中英

SQL根據列值對結果集進行排序

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

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