2011-04-19 38 views
2

我有我想用SELECT操作时,过滤掉重复的数据表,表本身包含这样的数据复制的行数据:MySQL的去除SELECT

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

我想什么是这样的,注意顺序仍然完好无损:

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

DISTINCT或GROUP BY没有工作,因为它是丢弃所有重复数据

为什么我需要这种类型的数据,是因为我想使用这些数据绘制图表,通过减少节点(删除某些序列中的重复数据),图表不会变得拥挤和更快地呈现。

+0

你有什么其他的领域? – 2011-04-19 04:31:09

+0

如果您给出完整的表格结构,那么在一列难以回答的基础上将会很有用。 – PHP 2011-04-19 04:32:24

+1

数据库中的表格没有继承订单的概念。根据定义,它们是无序的一组行。您必须提供一些其他信息A:唯一标识每个实例,B:提供值的顺序。 – Thomas 2011-04-19 04:44:40

回答

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); 
+0

你的ans会给予独特的价值... OP req。是完全不同的... – PHP 2011-04-19 04:37:34

+0

是的,我的数据是正确的,我想要的结果也是正确的...我用它来绘制图表,通过丢弃重复数据来减少节点是好的 – Dels 2011-04-19 04:45:50

+0

也许术语“重复”有点儿在数据库中的数据超载。澄清后,我改变了我原来的答案。试试看! – Bjoern 2011-04-19 06:16:03