我尝试了以下查询以与表中的NULL条目一起排序。我需要使用book_id对book_name进行排序。
升序:
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY CASE
WHEN book_id IS NULL THEN 1
ELSE 0
END,
book_id;
1
2
NULL
预期结果:
升序:
1
2
NULL
降序:
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY CASE
WHEN book_id IS NULL THEN 1
ELSE 0
END DESC,
book_id;
NULL
1
2
预期结果:
降序:
NULL
2
1
答案 0 :(得分:0)
您还可以将DESC
排序方向应用于第二个排序列:
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY CASE WHEN book_id IS NULL
THEN 1
ELSE 0
END DESC,
book_id DESC; --- !!!
如果省略,则默认为ASC
答案 1 :(得分:0)
只需将空值设置为-1,然后根据该值进行排序。例如
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY isnull(book_id,-1) ASC;
答案 2 :(得分:0)
ASC:
SELECT book_id
FROM books
order by book_id , COALESCE(book_id,0);
DESC:
SELECT book_id
FROM books
order by book_id desc , COALESCE(book_id,0) desc;
答案 3 :(得分:0)
您还可以使用以下查询 -
升序
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY IF(book_id IS NULL,1,0), book_id;
降序
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY IF(book_id IS NULL,0,1), book_id DESC;