をそれはちょうどSQLで可能かもしれないが、私はそれを行う方法を知っている方法は、2つになりますアプリケーションコードを使用した-passアプローチ - あなたが書いているアプリケーションがあると仮定します。
最初のパスは次のようなものになるだろう:あなたが使用しているどんな言語で結果をループしたいその後
SELECT theid, count(*) AS num, MAX(LEN(thestring)) AS keepme FROM thetable WHERE num > 1 GROUP BY theid
あなたと返された文字列にマッチするものを除いて、そのIDを使って何を削除します。私が知っている言語はPHPですので、私の例で使用しますが、その方法はどの言語でも同じです(簡潔にするため、エラー検査、準備された文などをスキップしています。慎重に):
$sql = 'SELECT theid, count(*) AS num, MAX(LEN(thestring)) AS keepme FROM thetable WHERE num > 1 GROUP BY theid';
$result = sqlsrv_query($resource, $sql);
while ($row = sqlsrv_fetch_object($result)) {
$sql = 'DELETE FROM thetable WHERE theid = '.$row->theid.' AND NOT thestring = '.$row->keepme;
$result = sqlsrv_query($resource, $sql);
}
あなたは、2つの文字列が同じ長さであれば、あなたがしたいと思うものを言いませんでしたので、このソリューションは、すべてのことを扱っていない - 私は、各IDのみを持っていることを仮定しています1つの最も長い文字列。
ありがとうPawel!ちょうど試しましたが、それは魅力のように機能しました! – Abbraxas