私は(my)SQLがあまり得意ではないので、ここに表と質問があります。テーブルを使用して履歴を保持します。最新(*)で、。の値がNULL以外の完全な行を返したいのですが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 |
3つの異なる値があるため、3つの行を取得したいと思いfield2
ます。'a'でマークされた行は最新であり、NULL以外であるため、必要field1
です。そして、2つの「b」-のうちの1つが欲しいです(どちらが私にとっては問題ではありません)。全部で3つになります。
私は次のようなステートメントを試しました:
SELECT MAX(id), field1, field2
FROM table1
GROUP BY field2;
しかし、それでは望ましい結果は得られません。