2

SELECT操作を使用するときに重複データを除外したいテーブルがあります。テーブル自体には次のようなデータが含まれています。

|=======|
| SPEED |
|=======|
|  100  |
|  100  |
|   90  |
|   80  |
|   80  |
|  100  |
|   80  |
|=======|

私がしたいのはこのようなものです、順序がまだ無傷であることに注意してください:

|=======|
| SPEED |
|=======|
|  100  |
|   90  |
|   80  |
|  100  |
|   80  |
|=======|

DISTINCTまたはGROUPBYは、重複したデータをすべて破棄するため、機能しませんでした

この種のデータが必要な理由は、このデータを使用してグラフを描画するためです。ノードを減らす(一部のシーケンスで重複するデータを削除する)ことで、グラフの混雑が緩和され、レンダリングが高速化されます。

4

1 に答える 1

1

質問が明確になったので編集しました。

このようなものをアーカイブするには、テーブルに別の列が必要です。それを呼び出しましょうId。私のテストテーブルは次のようになります。

CREATE TABLE `yourtable` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Speed` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM

次の行がフィールド速度の値と同じであるかどうかを確認するには、aLEFT JOINを使用して、両方の値が等しいすべてのデータを除外します。

これを試して:

SELECT A.Id, A.Speed, B.* 
FROM yourtable AS A
LEFT JOIN yourtable AS B ON A.Id+1 = B.Id
WHERE A.Speed != B.Speed OR ISNULL(B.Speed);
于 2011-04-19T04:33:23.847 に答える