我有一个表,我想在使用SELECT操作时过滤掉重复的数据,表本身包含这样的数据:
|=======|
| SPEED |
|=======|
| 100 |
| 100 |
| 90 |
| 80 |
| 80 |
| 100 |
| 80 |
|=======|
我想要的是这样的,请注意订单仍然完整:
|=======|
| SPEED |
|=======|
| 100 |
| 90 |
| 80 |
| 100 |
| 80 |
|=======|
DISTINCT或GROUP BY不起作用,因为它丢弃了所有重复的数据
为什么我需要这种数据,因为我想使用这些数据绘制图表,通过减少节点(删除某些序列中的重复数据),图表会更少拥挤,渲染速度更快
答案 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);