sql倒序排序 空值置后
时间: 2023-09-18 14:09:43 浏览: 155
可以使用以下 SQL 语句实现倒序排序,且将空值置后:
```
SELECT *
FROM table_name
ORDER BY column_name DESC NULLS LAST;
```
在该语句中,`table_name` 是你要查询的表名,`column_name` 是你要排序的列名。`DESC` 表示降序排序,`NULLS LAST` 表示将空值排在后面。
相关问题
mysql 倒序 空在最上
您可以使用以下 SQL 查询来实现在倒序排序时空值放在最上面:
```sql
SELECT column_name
FROM table_name
ORDER BY column_name IS NULL, column_name DESC;
```
在上述查询中,`column_name` 是您要排序的列名,`table_name` 是您要查询的表名。
使用 `column_name IS NULL` 在排序时可以将空值放在最上面。接着使用 `DESC` 关键字以倒序方式对非空值进行排序。
请注意,这意味着空值将放在排序结果的前面,而非后面。如果您想要空值放在最后,请将 `column_name IS NULL` 替换为 `column_name IS NOT NULL`,并删除 `DESC` 关键字即可。
mysql实现多个null值有上面最后一个非空值填充
可以使用MySQL中的IFNULL函数和子查询来实现多个NULL值填充最后一个非空值的需求。
假设有一个表格,其中有一个列是需要填充的列,名为`col_to_fill`,另一个列是用于排序的列,名为`sort_col`。则可以采用如下的SQL语句:
```
UPDATE table_name
SET col_to_fill = (
SELECT IFNULL(t1.col_to_fill, t2.col_to_fill)
FROM (
SELECT col_to_fill
FROM table_name
WHERE col_to_fill IS NOT NULL
ORDER BY sort_col DESC
LIMIT 1
) t1
JOIN (
SELECT col_to_fill
FROM table_name
WHERE col_to_fill IS NOT NULL
ORDER BY sort_col DESC
LIMIT 1
) t2
)
WHERE col_to_fill IS NULL;
```
解释一下这个SQL语句的含义:
首先,使用子查询找到所有非空的`col_to_fill`列,并按照`sort_col`列的倒序进行排序,取出排名第一的记录和排名第二的记录。这里使用了两个相同的子查询,目的是为了避免使用变量,以免出现不可预见的问题。
然后,对于需要填充的列值为NULL的记录,将其填充为排名第一和第二记录中的非空值。如果排名第一记录的`col_to_fill`值不为空,则使用该值填充;否则,使用排名第二记录的`col_to_fill`值填充。
最后,更新需要填充的列的值为填充后的值。
注意,这个SQL语句需要根据实际情况修改表名、列名和排序列等参数。
阅读全文