Mysql 包含空值的SQL排序
我尝试了以下查询,以便与表中的空条目一起排序。我需要按书名和书号进行排序 对于升序:Mysql 包含空值的SQL排序,mysql,sql,sql-server,sorting,Mysql,Sql,Sql Server,Sorting,我尝试了以下查询,以便与表中的空条目一起排序。我需要按书名和书号进行排序 对于升序: 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
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,
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
预期结果:
对于降序:
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
您还可以将
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,然后根据该值排序。比如说
SELECT book_id
FROM books
GROUP BY book_id
ORDER BY isnull(book_id,-1) ASC;
ASC:
描述:
您也可以使用以下查询- 用于升序
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;
用于下降
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;
当book_id为空时,按大小写排序,然后为1或0 end desc,book_id desc
按大小写保存一些键入内容当book_id为空时,按大小写顺序保存,然后0或1结束,book_id desc
。是否同时查找MySQL和MS SQL Server的代码?(不要标记不直接涉及的产品…)是否为MySQL或MS SQL Server或两者的isnull();这是不是把NULL
值放在了底部?我错了,我以为我们是关于MSSql的,Felix ASC是正确的,在这个例子中使用你是对的,这将按升序对非NULL图书id
进行排序。OP希望按降序对其进行排序,顶部为NULL
值。