このコマンドは、インシデント番号が小さいが日付が大きいレコードが同じテーブルに存在するすべてのレコードを選択します。
SELECT * FROM TableName T1 WHERE EXISTS
(SELECT * FROM TableName T2
WHERE T2.Incident < T1.Incident AND T2.Date > T1.Date)
この少し複雑なコマンドは、「両方向」で順序が乱れているレコードのみを検索します。つまり、ファイルの早い方に日付の古いレコードがあり、ファイルの後ろに古い日付のレコードがあります。これにより、ファイル内の非常に初期のレコードでミスをすると、後続のすべてのレコードが順不同に見えるという状況が回避されます。ただし、インシデント番号が最小または最大の 2 つのレコードでは、問題は検出されません。
SELECT * FROM TableName T1 WHERE EXISTS
(SELECT * FROM TableName T2
WHERE T2.Incident < T1.Incident AND T2.Date > T1.Date)
AND EXISTS
(SELECT * FROM TableName T2
WHERE T2.Incident > T1.Incident AND T2.Date < T1.Date)
最後に、ruakh がコメントで指摘しているように、上記のクエリはすべての順不同のレコードを提供します。つまり、技術的には、日付の連鎖の「破損点」を見つけるのが難しくなります。次のクエリは、チェーンがめちゃくちゃになったレコードのみを提供し、IncidentID を単調に増加させる必要がなく、インシデントの削除を許可します。
SELECT * FROM TableName T1 WHERE
Date < (SELECT Date FROM TableName T2 WHERE T2.IncidentID =
(SELECT MAX(IncidentID) FROM TableName T3 WHERE T3.IncidentID < T1.IncidentID))
OR Date > (SELECT Date FROM TableName T2 WHERE T2.IncidentID =
(SELECT MAX(IncidentID) FROM TableName T3 WHERE T3.IncidentID > T1.IncidentID))
(MySQL のコピーを手元に持っていないため、テストしていません)。