SQL根据列值对结果集进行排序

时间:2018-04-20 11:29:16

标签: mysql sql

我使用的是mysql,有没有办法可以根据列的值来命令结果集。

我希望行位于结果的末尾或开头

col = 'SOMEVALUE'

如果我的问题不明确,请考虑以下情况:

我有一个surveys表,其中有一个status列,我希望获得所有调查,但status = 'Expired'的那些需要位于结果集的末尾。

SQL方法吗?或者我需要在检索后手动对结果进行排序?

2 个答案:

答案 0 :(得分:1)

您可以在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”。

答案 1 :(得分:0)

如果您有更多列值,则可以在排序中使用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