获取 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);
下面是我的 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);