MySQL删除SELECT上的重复行数据

时间:2011-04-19 04:28:10

标签: mysql select duplicate-data

我有一个表,我想在使用SELECT操作时过滤掉重复的数据,表本身包含这样的数据:

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

我想要的是这样的,请注意订单仍然完整:

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

DISTINCT或GROUP BY不起作用,因为它丢弃了所有重复的数据

为什么我需要这种数据,因为我想使用这些数据绘制图表,通过减少节点(删除某些序列中的重复数据),图表会更少拥挤,渲染速度更快

1 个答案:

答案 0 :(得分:1)

编辑,因为问题已得到澄清。

为了达到这样的目的,你的桌子需要有另一个栏目,我们称之为Id。我的测试表看起来像这样:

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

为了检查下一行是否可能是字段速度的相同值,您可能只使用LEFT 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);