次の表があります。
有効期限が切れた顧客のレコードを取得し、それに応じてテーブルを更新する方法を見つけようとしています (更新とは、関連する顧客の customer_id を持つエントリ 'SERVICE EXPIRED' を持つ新しいレコードを追加することを意味します)。
テーブルの一番下を見ると、既存の顧客 (customer_id 11 と 16) の「SERVICE EXPIRED」というエントリを持つ 2 つのレコードがあることがわかります。
次のような SQL クエリを探しています。
- customer_id によって個別のレコードの最後のセットを取得します
- 結果の結果セットから同じ customer_id のレコードを除外する
以下を使用する場合:
SELECT MAX(id) FROM mytable WHERE status_id != '2' AND expiry < '2012-12-26 19:00:00' GROUP BY customer_id
ID 1、11、13、および 16 が返されます。ただし、ID 11 と 16 は必要ありません。これは、有効期限のステータスが後で表に記載されているためです (表の最後の 2 つのレコードを参照)。 1 は更新されており、id 3 の有効期限が更新されていることがわかります。私が欲しいのは id 13 だけです。これは、テーブルの後半に表示される「SERVICE EXPIRED」エントリを持たない唯一の有効期限切れのレコードだからです。
この要件を満たすことができる SQL クエリを探しています。
前もって感謝します