mysql - 查询以替换表中的空值

标签 mysql sql

我有这样的表,

当前表1

id | car_name | model | year
---+----------+-------+----- 
1  |a         | abc   | 2000
2  |b         | xyx   | 2001
3  |null      | asd   | 2003
4  |c         | qwe   | 2004
5  |null      | xds   | 2005
6  |d         | asd   | 2006

如您所见,我有一些空值,我想用之前的行值替换它们。

所以应该变成这样

所需的表 1

id | car_name | model | year
---+----------+-------+----- 
1  |a         | abc   | 2000
2  |b         | xyx   | 2001
3  |b         | asd   | 2003
4  |c         | qwe   | 2004
5  |c         | xds   | 2005
6  |d         | asd   | 2006  

我用谷歌搜索,但没有找到任何解决方案。

随时欢迎任何建议。

提前致谢。

最佳答案

即使连续有几条记录为 NULL

,此查询也应该有效

查询:

SQLFIDDLEExample

UPDATE Table1
SET car_name = (SELECT t1.car_name
                FROM (SELECT * FROM Table1) t1
                WHERE t1.id < Table1.id
                AND t1.car_name is not null
                ORDER BY t1.id DESC
                LIMIT 1)
WHERE car_name is null

结果:

| ID | CAR_NAME | MODEL | YEAR |
--------------------------------
|  1 |        a |   abc | 2000 |
|  2 |        b |   xyx | 2001 |
|  3 |        b |   asd | 2003 |
|  4 |        c |   qwe | 2004 |
|  5 |        c |   xds | 2005 |
|  6 |        d |   asd | 2006 |

关于mysql - 查询以替换表中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836482/

相关文章:

mysql - 如何根据加入到连接的值有条件地加入?

php - 将txt文件导入Mysql

mysql - 复杂的sql语句,里面有4个条件

php - PHP 中的 SQL 查询,谓词位于数组中

mysql - xampp mysql magento 文件导入

c# - 连接到 SQL Server 数据库

PHP 连接 SQL Server 2008 - 如何使用 odbc_connect 设置 utf-8

mysql - mysql 事务期间锁定表

mysql - 一个查询可以只对每个表使用一个索引吗?

php - 如何获得Laravel中所有型号的列表?