获取 table 列的最后一个非空值

Get the last non null value of a table column

下面是我的 table,我想从 B 列中获得结果中的值 3。

A B
1 1
2 Null
3 2
4 Null
5 3
6 Null
7 Null
8 Null

案例不工作:它应该 return 10

A B
1 1
2 Null
3 2
4 Null
5 3
6 Null
7 Null
8 10

使用 LIMIT 查询:

SELECT *
FROM yourTable
WHERE B IS NOT NULL
ORDER BY A DESC
LIMIT 1;

是否要获取值“3”,因为它在 'B' 列中最大?

如果是这样,您可以运行以下查询:

SELECT *
FROM Table
WHERE B IS NOT NULL
ORDER BY B DESC
LIMIT 1;

这个问题没什么可继续的。但是,假设您可以按 A 列排序,答案将是

SELECT * from table
where B is not NULL
Order by A DESC
Limit 1

如果 A 是数字,则 order by 可以正常工作,您可以从 B 列获得所有 3 个非空值。然后 Order by descending + limit 1 将确保您获得 B 的最后一个值

您已经收到非常好的答案,应该对您有所帮助。我只想添加一个进一步的建议,如果 A 和 B 都是数字并且它们总是像您的示例中那样排序,则该建议可以正常工作,这意味着最高的 b 条目始终具有最高的 a 值。

SELECT MAX(b) FROM tableB
WHERE b IS NOT NULL
HAVING MAX(a);