MySQL删除SELECT上重复的行数据
我有一个表,我想在使用SELECT操作时过滤掉重复的数据,该表本身包含如下数据:MySQL删除SELECT上重复的行数据,mysql,select,duplicate-data,Mysql,Select,Duplicate Data,我有一个表,我想在使用SELECT操作时过滤掉重复的数据,该表本身包含如下数据: |=======| | SPEED | |=======| | 100 | | 100 | | 90 | | 80 | | 80 | | 100 | | 80 | |=======| CREATE TABLE `yourtable` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Speed` int(11) DEFAULT NULL,
|=======|
| SPEED |
|=======|
| 100 |
| 100 |
| 90 |
| 80 |
| 80 |
| 100 |
| 80 |
|=======|
CREATE TABLE `yourtable` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Speed` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM
我想要的是这样的,请注意,订单仍然完好无损:
|=======|
| SPEED |
|=======|
| 100 |
| 90 |
| 80 |
| 100 |
| 80 |
|=======|
DISTINCT或GROUP BY无效,因为它将丢弃所有重复的数据
我之所以需要这种数据,是因为我想使用这种数据绘制图表,通过减少节点(删除某些序列中的重复数据),图表将不那么拥挤,并且可以更快地进行编辑,因为问题已经澄清
为了归档这样的内容,您的表需要有另一列,我们将其称为Id
。我的测试表如下所示:
|=======|
| SPEED |
|=======|
| 100 |
| 100 |
| 90 |
| 80 |
| 80 |
| 100 |
| 80 |
|=======|
CREATE TABLE `yourtable` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Speed` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM
为了检查下一行是否为相同的田间速度值,您可以使用左连接
,并省略两个值相等的所有数据
试试这个:
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);
你还有其他字段吗?如果你给出完整的表结构,基于一列,这将非常有用。数据库中的表没有顺序继承概念。根据定义,它们是一组无序的行。您必须提供一些其他信息A:唯一地标识每个实例,B:提供值的顺序。是的,我的数据是正确的,我想要的结果也是正确的…我将此用于绘制图表,通过丢弃重复的数据来减少节点是好的可能是术语“重复”在数据库中的数据方面有点过载。澄清之后,我改变了原来的答案。试试看!