我不太擅长(我的)SQL,所以这里有一个表格和一个问题。我用表格来保存历史。我想返回最近的完整行(*)并且field1
. 如果没有这样的行,我想获取任何field1
为 NULL 的行。
*)最近的意思,它有最高id
的(下面的'a'-')。
表格和示例:
| id | field1 | field2 |
------------------------
| 1 | (null) | 34 | <--b
| 2 | 77 | 1234 |
| 3 | (null) | 1234 |
| 4 | (null) | 234 |
| 5 | (null) | 34 | <--b
| 6 | 99 | 1234 |
| 7 | 42 | 1234 | <--a
| 8 | 13 | 234 | <--a
| 9 | (null) | 234 |
我想得到三行,因为有三个不同的field2
值。我想要标有“a”的行,因为它们是最新的并且具有非 NULL field1
。而且我想要两个'b'-'中的一个(对我来说哪个没关系)。共制作三个。
我尝试了如下声明:
SELECT MAX(id), field1, field2
FROM table1
GROUP BY field2;
但这不会产生预期的结果。