在一个中间表,查询成绩并对其进行倒序排序,但成绩中有一个为空值,不加入倒序排序,该怎样使空值也加入倒叙排序
时间: 2023-05-30 08:01:13 浏览: 46
可以使用COALESCE函数将空值替换为一个特定的值,例如-1,然后再进行排序。排序完成后,再使用CASE语句将-1替换回空值。
示例代码:
SELECT student_name, COALESCE(score, -1) as score
FROM scores
ORDER BY score DESC;
SELECT student_name,
CASE WHEN score = -1 THEN NULL ELSE score END as score
FROM (
SELECT student_name, COALESCE(score, -1) as score
FROM scores
ORDER BY score DESC
) as t;
相关问题
mysql中有一张表user,表中有一个varchar类型的字段order,可以为空值,如何对他进行排序
如果要按照order字段进行排序,可以使用以下MySQL语句:
SELECT * FROM user ORDER BY `order`;
注意,order是一个关键字,如果要在SQL语句中使用它作为字段名,需要用反引号(`)括起来。另外,如果order字段中有空值,它们会排在排序结果的最前面。如果要把空值放在最后面,可以使用以下语句:
SELECT * FROM user ORDER BY `order` ASC NULLS LAST;
其中,ASC表示升序排列,NULLS LAST表示把空值放在最后面。如果要降序排列,可以使用DESC关键字。
一个查询不为空值的select与另一个查询为空值的selec进行union使其不返回空值
你可以使用下面的语句来实现你想要的结果:
```
SELECT column1, column2 FROM table WHERE column1 IS NOT NULL
UNION
SELECT column1, column2 FROM table WHERE column1 IS NULL AND column2 IS NOT NULL;
```
这个语句首先选择那些`column1`不为空值的行,并返回它们的`column1`和`column2`。然后,它选择那些`column1`为空值但`column2`不为空值的行,并返回它们的`column1`和`column2`。使用 `UNION` 连接这两个结果集,就可以得到一个不包含空值的结果集。